public override async Task <Reply> UpdatePassword(UpdatePasswordRequest request, ServerCallContext context) { var reply = new Reply(); if (!PwdEncryptor.ValidateUserName(request.NewPassword)) { reply.Error = Error.InvalidArguments; return(reply); } var user = await _loginUserService.GetUser(context.GetHttpContext()); if (user == null || user.Adm) { reply.Error = Error.InvalidOperation; return(reply); } var userEntity = await _usersService.All().FirstOrDefaultAsync(u => u.Id == user.Id && u.Password == PwdEncryptor.Encrypt(request.Password)); if (userEntity == null) { reply.Error = Error.InvalidUserOrPwd; return(reply); } userEntity.Password = PwdEncryptor.Encrypt(request.NewPassword); await _usersService.Update(userEntity); await _loginUserService.ClearUser(context.GetHttpContext()); return(reply); }
public override async Task <UserReply> Add(AddRequest request, ServerCallContext context) { var reply = new UserReply(); if (!PwdEncryptor.ValidateUserName(request.Id) || !PwdEncryptor.ValidateEmail(request.Email)) { reply.Error = Error.InvalidArguments; return(reply); } var user = await _userService.GetUser(context.GetHttpContext()); if (user == null) { reply.Error = Error.NeedLogin; return(reply); } if (!user.HasWritePermission()) { reply.Error = Error.NoPermission; return(reply); } var existed = await _service.All().FirstOrDefaultAsync(u => u.Id == request.Id || u.Email == request.Email); if (existed != null) { reply.Error = Error.EntityConflict; return(reply); } var password = string.IsNullOrWhiteSpace(request.Password) ? Guid.NewGuid().ToString().Replace("-", "").Substring(0, 8) : request.Password; await _emailService.Send(request.Email, "User register", $"{password}"); var newUser = new User { Id = request.Id, Email = request.Email, Status = 0, Created = DateTime.Now, Authorised = 0, AuthorisionExpired = DateTime.Now, Password = PwdEncryptor.Encrypt(password) }; newUser = await _service.Add(newUser); reply.User = Converter(newUser); return(reply); }
public override async Task <Reply> UpdateName(UpdateNameRequest request, ServerCallContext context) { var reply = new Reply(); if (!PwdEncryptor.ValidateUserName(request.NewName)) { reply.Error = Error.InvalidArguments; return(reply); } var user = await _loginUserService.GetUser(context.GetHttpContext()); if (user == null || user.Adm) { reply.Error = Error.InvalidOperation; return(reply); } var userEntity = await _usersService.All().FirstOrDefaultAsync(u => u.Id == user.Id); if (userEntity == null) { reply.Error = Error.InvalidOperation; return(reply); } if (userEntity.Id == request.NewName) { return(reply); } var existed = await _usersService.All().FirstOrDefaultAsync(u => u.Id == request.NewName); if (existed != null) { reply.Error = Error.InvalidOperation; return(reply); } userEntity.Id = request.NewName; await _usersService.Update(userEntity); user.Id = request.NewName; await _loginUserService.SetUser(context.GetHttpContext(), user); return(reply); }