public async Task <object> RegistUserAsync([FromBody] UserRegistModel model) { if (string.IsNullOrWhiteSpace(model.UserName)) { return(BadRequest(WebResultHelper.JsonMessageResult("用户名不能为空"))); } if (string.IsNullOrWhiteSpace(model.Password)) { return(BadRequest(WebResultHelper.JsonMessageResult("密码不能为空"))); } GeneralResponse result = await userService.RegistUserAsync(new Extension.UserRegistModel { Name = model.UserName, Password = model.Password, PositionId = model.PositionId }); if (result.IsSuccess) { return(Ok()); } return(BadRequest(WebResultHelper.JsonMessageResult(result.Message))); }
/// <summary> /// 注册用户 /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <GeneralResponse> RegistUserAsync(UserRegistModel model) { RegistUserRequest user = new RegistUserRequest { Name = model.Name, Password = model.Password, PositionId = model.PositionId }; GeneralResponse result = await userClient.RegistUserAsync(user); return(result); }
/** * Registo de novos utilizadores. Devem ser recebidos o username, email e password para criar o novo utilizador. * Quando é guardado um novo utilizador na base de dados, o email e username são transformados em upper case, e * a password é encriptada. */ public async override Task <UserRegistModel> Regist(UserRegistLookupModel request, ServerCallContext context) { UserRegistModel output = new UserRegistModel(); // Transformação dos carateres do email e username para upper case string email = request.Email.ToUpper(); string username = request.Username;//.ToUpper(); // Verificações se um outro utilizador tem o mesmo email e/ou o mesmo username Models.User u1 = new Models.User(), u2 = new Models.User(); u1 = _context.User.FirstOrDefault(u => u.Username == username); u2 = _context.User.FirstOrDefault(u => u.Email == email); // Um utilizador tem o mesmo username if (u1 != null) { if (u2 == null) { output.Valid = -3; // Um utilizador tem apenas o mesmo username } else { output.Valid = -1; // Um utilizador tem o mesmo username e email } } // Um utilizador tem o mesmo email else if (u2 != null) { output.Valid = -2; // Um utilizador tem apenas o mesmo email } // Nenhum utilizador tem o mesmo username e/ou email else { // Encriptação da password SHA512 sha512 = SHA512Managed.Create(); byte[] bytes = sha512.ComputeHash(Encoding.UTF8.GetBytes(request.Password)); string password = Convert.ToBase64String(bytes); Models.User u = new Models.User { Username = username, Email = email, Password = password }; // Verifica e garante que a BD existe _context.Database.EnsureCreated(); // Guarda-se o novo utilizador na base de dados _context.User.Add(u); _context.SaveChanges(); // Regista o utilizador no banco de créditos await APIServerCommunication.RegisterUser(u.Username, u.Id); // Envia-se uma mensagem uma mensagem de confirmação de registo ao cliente output.Valid = 1; } return(await Task.FromResult(output)); }