public async Task <IActionResult> RegisterAsync([FromBody] RegisterEmailCreateModel model) { var res = await _authenticationService.RegisterByEmailAsync(model); if (res.IsSuccessed) { return(ReturnOk(null)); } return(ReturnBadRequest(res.Error)); }
public async Task <Result <RegisterEmailCreateModel> > RegisterByEmailAsync(RegisterEmailCreateModel model) { if (await IsExistUserAsync(model.Login)) { return(new Result <RegisterEmailCreateModel>("User is already exist")); } if (await IsUsernameBusyAsync(model.Username)) { return(new Result <RegisterEmailCreateModel>("Username is busy")); } var newUser = new User { CreatedAt = DateTime.Now, Name = model.Name, Username = model.Username, About = model.About }; var newUserLogin = new UserLogin { CreatedAt = DateTime.Now, CreatedBy = "s", IsConfirm = false, Type = UserLoginType.Email, TokenConfirm = RandomGenerator.GetString(50, IsLowwer: true), Version = 0, Login = model.Login, PasswordHash = model.Password.GeneratePasswordHash(), User = newUser, RegisterFromDevice = _detectClient.GetClientInfo(model) }; //todo create notification //todo send confirmation account to email await _db.UserLogins.AddAsync(newUserLogin); await _db.SaveChangesAsync(); if (newUserLogin.User.Id == 1) { await _db.UserRoles.AddAsync(new UserRole { UserId = newUserLogin.User.Id, RoleId = 1 }); await _db.SaveChangesAsync(); } else { await _db.UserRoles.AddAsync(new UserRole { UserId = newUserLogin.User.Id, RoleId = 3 }); await _db.SaveChangesAsync(); } return(new Result <RegisterEmailCreateModel>()); }