public async Task <ActionResult <Models.WorkerWithToken> > SignIn([FromBody] Models.AuthModel authModel) { var authModelValidator = new AuthModelValidator(); var validationResult = authModelValidator.Validate(authModel); 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(authModel.Password); var existUser = _context.Workers .Include(x => x.Speciality) .ThenInclude(x => x.Department) .SingleOrDefault(x => x.Email == authModel.Email && x.Password == hashPassword); if (existUser != null) { Models.File avatar; if (existUser.AvatarUrl != null) { var fullFileName = existUser.AvatarUrl.Replace(Constans.ApiUrl + Constans.FileDownloadPart, string.Empty); avatar = _context.Files.SingleOrDefault(x => x.Name == fullFileName); } else { avatar = null; } var token = JWTExtension.CreateToken(existUser); return(Ok(new Models.WorkerWithToken { Token = token, Worker = ResponseWorkerList.FromApiWorker(existUser, avatar: avatar), })); } else { return(NotFound(new ExceptionInfo { Message = AuthErrorsMessages.UserNotFound, Description = "Сотрудник с таким Email и паролем не существует" })); } }
public async Task <IResult <AuthEntity> > AddAsync(AuthModel authModel) { var validation = new AuthModelValidator().Validate(authModel); if (validation.Failed) { return(Result <AuthEntity> .Fail(validation.Message)); } if (await _authRepository.AnyByLoginAsync(authModel.Login)) { return(Result <AuthEntity> .Fail(Texts.AuthError)); } var authEntity = AuthFactory.Create(authModel); var password = _hashService.Create(authEntity.Password, authEntity.Salt); authEntity.ChangePassword(password); await _authRepository.AddAsync(authEntity); return(Result <AuthEntity> .Success(authEntity)); }
public async Task <IResult <Auth> > AddAsync(AuthModel model) { var validation = new AuthModelValidator().Validation(model); if (validation.Failed) { return(validation.Fail <Auth>()); } if (await _authRepository.AnyByLoginAsync(model.Login)) { return(Result <Auth> .Fail("Login exists!")); } var auth = _authFactory.Create(model); var password = _hashService.Create(auth.Password, auth.Salt); auth.UpdatePassword(password); await _authRepository.AddAsync(auth); return(auth.Success()); }