signup = async (request: express.Request, response: express.Response) => {
const signupRequest: SignupRequest = request.body;
const repository: UserRepository = new UserRepository();
let id: string = null;
try {
// 首先,在数据库中创建用户。我们将使用 id 来注册令牌。
// 这样我们就知道凭证属于哪个用户。
id = repository.create(signupRequest.username, signupRequest.firstName, signupRequest.lastName);
} catch {
// 创建用户失败,进行错误处理。
} finally {
repository.close();
}
if (!id) {
// 我们无法创建用户,因此不要继续创建令牌。
response.send(400);
}
let registerOptions = new RegisterOptions();
registerOptions.userId = id;
registerOptions.username = signupRequest.username;
// 我们将使用我们的 deviceName 作为别名。但使用别名是完全可选的。
if (signupRequest.deviceName) {
registerOptions.aliases = new Array(1);
registerOptions.aliases[0] = signupRequest.deviceName;
}
registerOptions.discoverable = true;
// 现在调用 Passwordless.dev 来注册一个新的令牌。
const token: RegisterTokenResponse = await this._passwordlessClient.createRegisterToken(registerOptions);
// 将令牌返回给客户端。
response.send(token);
}