示例#1
0
        public async Task <IActionResult> RequestLoginCode(string email)
        {
            var code = UserLoginCode.Generate(DateTimeOffset.Now);
            var user = await db.GetUserFromEmail(email);

            var emailResult = await SendLoginCodeAsync(
                email,
                user?.Nickname ?? email,
                code.Code);

            if (!emailResult.Successful)
            {
                return(StatusCode(
                           StatusCodes.Status503ServiceUnavailable,
                           new ErrorResult("Email service unavailable")));
            }

            var result = await db.GenerateLoginCodeOrAddUser(email, code);

            if (env.IsDevelopment())
            {
                logger.LogInformation($"Added login code '{code.Code}' for {email}");
            }

            if (result.Item1)
            {
                this.logger.LogInformation($"Added user");
            }

            return(Ok(new
            {
                UserId = result.Item2,
                NewUser = result.Item1
            }));
        }
示例#2
0
 public LoginCodeEmailModel(User user, UserLoginCode code)
 {
     User = user;
     Code = code;
 }