Exemple #1
0
        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 RegisterViewModel()
        {
            _validator           = new RegisterModelValidator();
            _userClient          = new UserClient();
            RegisterCommand      = new RelayCommand <object>(DoRegister);
            ReturnToLoginCommand = new RelayCommand(BackToLogin);

            CustomFields = new ObservableRangeCollection <CustomUserFieldViewModel>();

            Loaded += (sender, args) => { Task.Run(async() => { await LoadCustomFields(); }); };
        }
        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 и паролем уже существует"
                }));
            }
        }
Exemple #4
0
 public AuthenticateController(IAuthenticateService authenticateService,
                               IMapper mapper,
                               IOptions <AppSettings> appSettings,
                               IOptions <RegisterModelValidator> registerValidations,
                               IOptions <AuthenticateModelValidator> authenticateValidator,
                               IHttpClientFactory httpClientFactory)
 {
     this.authenticateService   = authenticateService;
     this.appSettings           = appSettings.Value;
     this.registerValidations   = registerValidations.Value;
     this.authenticateValidator = authenticateValidator.Value;
     this.mapper            = mapper;
     this.httpClientFactory = httpClientFactory;
 }
Exemple #5
0
        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);
        }