public async Task <IActionResult> Register([FromBody] RegisterModel model) { try { var validator = new RegisterModelValidator(); if (model == null || !validator.Validate(model)) { return(BadRequest()); } var userExists = await userService.ExistsWhere(new { Email = model.Email }) ?? true; if (userExists) { return(Forbid()); } model.Password = BCrypt.Net.BCrypt.HashPassword(model.Password); var response = await userService.Add(new User(model)); if (response != HttpStatusCode.OK) { return(StatusCode((int)response)); } return(Ok()); } catch (Exception e) { logger.LogError(e, e.Message); return(StatusCode(500)); } }
public async Task <ActionResult <Models.WorkerWithToken> > SignUp([FromBody] Models.RegisterModel registerModel) { var registerModelValidator = new RegisterModelValidator(); var validationResult = registerModelValidator.Validate(registerModel); if (!validationResult.IsValid) { return(UnprocessableEntity(validationResult.Errors.Select(x => new ValidatorException { Field = x.PropertyName, Message = x.ErrorCode, Description = x.ErrorMessage }).ToList())); } var hashPassword = HashPassword.Hash(registerModel.Password); var existUser = await _context.Workers.SingleOrDefaultAsync(x => x.Email == registerModel.Email && x.Password == hashPassword); if (existUser == null) { var newWorker = new Models.Worker { FirstName = registerModel.FirstName, LastName = registerModel.LastName, Email = registerModel.Email, Password = hashPassword, SpecialityId = registerModel.SpecialityId }; var token = JWTExtension.CreateToken(newWorker); _context.Workers.Add(newWorker); await _context.SaveChangesAsync(); var registeredWorker = await _context.Workers .Include(x => x.Speciality) .ThenInclude(x => x.Department) .SingleOrDefaultAsync(x => x.Email == newWorker.Email && x.Password == newWorker.Password); return(Ok(new Models.WorkerWithToken { Token = token, Worker = ResponseWorkerList.FromApiWorker(registeredWorker, avatar: _getAvatar(registeredWorker.AvatarUrl)), })); } else { return(Conflict(new ExceptionInfo { Message = AuthErrorsMessages.UserExist, Description = "Сотрудник с таким Email и паролем уже существует" })); } }
private bool IsFormValid(object parameter, out RegisterModel registerModel) { registerModel = null; var errorMessages = new List <string>(); var customErrors = false; var passwordContainer = parameter as IHavePasswords; if (passwordContainer == null) { return(false); } // Pull out our passwords var p1 = LoginViewModel.ConvertToUnsecureString(passwordContainer.SecurePassword); var p2 = LoginViewModel.ConvertToUnsecureString(passwordContainer.SecurePasswordConfirm); // Validate the form registerModel = new RegisterModel(Email, p1, p2); var v = _validator.Validate(registerModel); if (!v.IsValid) { // Put the errors into our error list, ensuring email goes first, followed by custom, followed by password // This is the same order as the view foreach (var msg in v.Errors) { if ((msg.PropertyName != nameof(registerModel.Email)) && !customErrors) { customErrors = true; errorMessages.AddRange(GetCustomErrors()); } errorMessages.Add(msg.ErrorMessage); } } if (!customErrors) { errorMessages.AddRange(GetCustomErrors()); } // Display error message(s) if invalid if (errorMessages.Any()) { ErrorMessage = string.Join("\n", errorMessages); return(false); } ErrorMessage = ""; return(true); }
public IActionResult Register([FromBody] RegisterModel model) { var result = registerValidations.Validate(model); if (result.IsValid) { var user = mapper.Map <User>(model); var res = authenticateService.Register(user, model.Password); if (res.Result.Succeeded) { return(Ok()); } return(Conflict()); } return(Conflict(result.Errors)); }
public bool CheckRegister(RegisterModel registerModel) { if (registerModel == null) { return(false); } RegisterModelValidator validator = new RegisterModelValidator(); var result = validator.Validate(registerModel); if (!result.IsValid) { InvalidRegisterMessage = ErrorMessageGenerator.ComposeErrorMessage(result); return(false); } return(true); }
public async Task <ServiceResponse <ProfileViewModel> > Register([FromBody] RegisterModel model) { var response = new ServiceResponse <ProfileViewModel>(); try { var validation = new RegisterModelValidator(model); var results = validation.Validate(model); response.ErrorMessages = results.Errors.ToList(); if (!response.Successful) { return(response); } var isUserExist = await this._userManager.FindByEmailAsync(model.Email); if (isUserExist != null) { response.ErrorMessages.Add( new ValidationFailure(string.Empty, "That email is taken. Try another.")); return(response); } var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, Disabled = false }; var result = await this._userManager.CreateAsync(user, model.Password); if (result.Succeeded) { user.EmailConfirmed = false; await this._userManager.UpdateAsync(user); await this._userManager.AddToRoleAsync(user, RolesNames.User); var code = await this._userManager.GenerateEmailConfirmationTokenAsync(user); code = HttpUtility.UrlEncode(code); var callbackUrl = $"{new Uri(this._iconfiguration["Cors:AllowedOrigin"])}/register?userid={user.Id}&code={code}"; var registerText = $"{this._env.WebRootPath}{Path.DirectorySeparatorChar}EmailTemplate{Path.DirectorySeparatorChar}Register.html"; var replaceEmailText = new { model.Email, RegisterLink = callbackUrl, Logo = Convert.ToString( $"{new Uri(this._iconfiguration["Cors:AllowedOrigin"])}{Path.DirectorySeparatorChar}assets{Path.DirectorySeparatorChar}img{Path.DirectorySeparatorChar}logo.png"), Url = Convert.ToString( new Uri(this._iconfiguration["Cors:AllowedOrigin"])) }; var registerBody = replaceEmailText.SetEmailTemplates(registerText.ReadFile()); await this._emailSender.SendEmailAsync(model.Email, "Confirm your Account", registerBody); } else { foreach (var error in result.Errors) { response.ErrorMessages.Add(new ValidationFailure(error.Code, error.Description)); } } } catch (Exception ex) { response.ErrorMessages.Add(new ValidationFailure(model.Email, ex.Message)); } return(response); }