public async Task <ActionResult <OkMsg> > ChangePassword(ResetPasswordByUserResource resetPasswordByUserResource)
        {
            var user = await _linUserRepository.GetDetailAsync(CurrentUser.Id);

            var encryptPassword = Pbkdf2Encrypt.EncryptPassword(resetPasswordByUserResource.OldPassword);

            if (user !.Password != encryptPassword)
            {
                throw new ForbiddenException
                      {
                          ErrorCode = ResultCode.UserPasswordErrorCode
                      };
            }

            _linUserRepository.ChangePassword(user !, resetPasswordByUserResource.Password);

            if (!await UnitOfWork.SaveAsync())
            {
                throw new Exception("Save Failed!");
            }

            return(Ok(new OkMsg
            {
                Msg = "密码修改成功"
            }));
        }
Example #2
0
        public async Task <LinUser?> Verify(string username, string password)
        {
            var query = _linContext.LinUsers
                        .AsQueryable();

            var encryptPassword = Pbkdf2Encrypt.EncryptPassword(password);

            query = query.Where(u => u.Username == username && u.Password == encryptPassword);

            var user = await query.SingleOrDefaultAsync();

            return(user);
        }
Example #3
0
        public static async Task SeedAsync(LinContext linContext,
                                           ILoggerFactory loggerFactory, int retry = 0)
        {
            var retryForAvailability = retry;

            try
            {
                // TODO: Only run this if using a real database
                // linContext.Database.Migrate();

                if (!linContext.LinUsers.Any())
                {
                    linContext.LinUsers.Add(
                        new LinUser
                    {
                        Username = "******",
                        Email    = "*****@*****.**",
                        Password = Pbkdf2Encrypt.EncryptPassword("123456"),
                        Admin    = (short)UserAdmin.Admin,
                        Active   = (short)UserActive.Active
                    }
                        );
                    await linContext.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                if (retryForAvailability < 10)
                {
                    retryForAvailability++;
                    var logger = loggerFactory.CreateLogger <LinContextSeed>();
                    logger.LogError(ex.Message);
                    await SeedAsync(linContext, loggerFactory, retryForAvailability);
                }
            }
        }
 public void ResetPassword(LinUser user, string password)
 {
     user.Password = Pbkdf2Encrypt.EncryptPassword(password);
     _linContext.Update(user);
 }