Exemplo n.º 1
0
        private void ValidateUserLoginRequest(UserSignInRequest request)
        {
            ValidationException exception = new ValidationException();

            if (request == null)
            {
                exception.Add(new ValidationError("common.invalidRequest"));
            }

            if (string.IsNullOrWhiteSpace(request.Email))
            {
                exception.Add(new ValidationError("registration.signin.validation.emailRequired"));
            }

            if (string.IsNullOrWhiteSpace(request.Pwd))
            {
                exception.Add(new ValidationError("registration.signin.validation.pwdRequired"));
            }

            IUserRepository userRepository = IoC.Container.Resolve <IUserRepository>();
            User            userProfile    = userRepository.GetByEmail(request.Email);

            if (userProfile == null || EncodeHelper.EncodePassword(request.Pwd) != userProfile.Password)
            {
                exception.Add(new ValidationError("registration.signin.validation.invalidEmailOrPwd"));
            }

            exception.ThrowIfError();
        }
Exemplo n.º 2
0
        public override async Task <User> Authenticate(UserSignInRequest request, ServerCallContext context)
        {
            if (string.IsNullOrEmpty(request.User.UserName) || string.IsNullOrEmpty(request.User.Password))
            {
                return(null);
            }

            var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == request.User.UserName);

            if (user == null)
            {
                return(null);
            }

            var userResponse = _mapper.Map <User>(user);

            if (!VerifyPasswordHash(request.User.Password, Convert.FromBase64String(user.PasswordHash), user.PasswordSalt))
            {
                throw new ArgumentException("Username or password is incorrect");
            }

            var tokenString = GetJwtToken(user.Id);

            userResponse.JWT = tokenString;

            return(userResponse);
        }
        public async Task <UserLoginResponse> SignIn(UserSignInRequest request)
        {
            LogUtil.Debug("SignIn : " + request.Username + " In time: " + DateTime.UtcNow.ToString());
            IAuthenticationManager authentication = HttpContext.Current.GetOwinContext().Authentication;
            UserLoginResponse      response       = await Task.Run(() => _userService.UserSignIn(request));

            string token = string.Empty;

            if (response != null && response.ErrorCode == LAMPConstants.API_SUCCESS_CODE)
            {
                UserSessionToken tokenObj = _authService.CreateSessionTokenObject(response.UserId, response.Email, response.StudyId);
                if (tokenObj.ErrorCode == LAMPConstants.API_SUCCESS_CODE)
                {
                    response.SessionToken = tokenObj.SessionToken;
                }
                else
                {
                    response = new UserLoginResponse
                    {
                        ErrorCode    = LAMPConstants.API_SESSION_TOKEN_UPDATION_FAILED,
                        ErrorMessage = ResourceHelper.GetStringResource(LAMPConstants.API_SESSION_TOKEN_UPDATION_FAILED)
                    };
                }
            }
            LogUtil.Debug("SignIn : " + request.Username + " Out time: " + DateTime.UtcNow.ToString());
            return(response);
        }
Exemplo n.º 4
0
        public async Task <IActionResult> SignInAsync(UserSignInRequest model)
        {
            var authenticationResult = await _userService.AuthenticateAsync(model);

            return(!authenticationResult.Result
                ? BadRequest(new { message = authenticationResult.Message })
                : Ok(authenticationResult.Data));
        }
        public async Task <ActionResult> SignInAsync([FromForm] UserSignInRequest request)
        {
            User user = mapper.Map <UserSignInRequest, User>(request);
            AuthStatusResponse response = await authService.SignInAsync(user);

            if (response.Status)
            {
                return(Ok(response));
            }
            return(Unauthorized(new ErrorResponse {
                Error = response.Message, Status = response.Status
            }));
        }
Exemplo n.º 6
0
        public IResponseData <UserSignInResponse> SignIn([FromBody] UserSignInRequest request)
        {
            IResponseData <UserSignInResponse> response = new ResponseData <UserSignInResponse>();

            try
            {
                IUserService       userService    = IoC.Container.Resolve <IUserService>();
                UserSignInResponse signInResponse = userService.SignIn(request);
                response.SetData(signInResponse);
            }
            catch (ValidationException ex)
            {
                response.SetErrors(ex.Errors);
                response.SetStatus(System.Net.HttpStatusCode.PreconditionFailed);
            }
            return(response);
        }
Exemplo n.º 7
0
        public async Task <AuthenticationResult> AuthenticateAsync(UserSignInRequest model)
        {
            var user = (await _userStoreManager.GetAllAsync())
                       .SingleOrDefault(x => x.Username == model.Username && x.Password == model.Password);

            return(user is null
                ? new AuthenticationResult
            {
                Message = "Username or password is incorrect",
            }
                : new AuthenticationResult
            {
                Result = true,
                Message = "User is successfully authenticated",
                Data = new AuthenticateResponse(user, GenerateJwtToken(user))
            });
        }
        public override async Task <User> Authenticate(UserSignInRequest request, ServerCallContext context)
        {
            if (string.IsNullOrEmpty(request.User.UserName) || string.IsNullOrEmpty(request.User.Password))
            {
                return(null);
            }

            var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == request.User.UserName);

            var userResponse = _mapper.Map <User>(user);

            if (user == null)
            {
                return(null);
            }

            return(!VerifyPasswordHash(request.User.Password, Convert.FromBase64String(user.PasswordHash), user.PasswordSalt)
                ? null
                : userResponse);
        }
Exemplo n.º 9
0
        public UserSignInResponse SignIn(UserSignInRequest request)
        {
            AuthenticationToken token;
            User user;

            this.ValidateUserLoginRequest(request);
            using (IUnitOfWork uow = new App.Common.Data.UnitOfWork(RepositoryType.MSSQL))
            {
                IUserRepository userRepository = IoC.Container.Resolve <IUserRepository>(uow);
                token                  = new App.Common.AuthenticationToken(Guid.NewGuid(), DateTimeHelper.GetAuthenticationTokenExpiredUtcDateTime());
                user                   = userRepository.GetByEmail(request.Email);
                user.Token             = token.Value;
                user.TokenExpiredAfter = token.ExpiredAfter;
                userRepository.Update(user);
                uow.Commit();
            }

            UserQuickProfile profile = new UserQuickProfile(user);

            return(new UserSignInResponse(token, profile));
        }
Exemplo n.º 10
0
        private void ValidateUserLoginRequest(UserSignInRequest request)
        {
            if (request == null)
            {
                throw new ValidationException("Common.InvalidRequest");
            }
            if (String.IsNullOrWhiteSpace(request.Email))
            {
                throw new ValidationException("Registration.SignIn.InvalidEmail");
            }
            if (String.IsNullOrWhiteSpace(request.Pwd))
            {
                throw new ValidationException("Registration.SignIn.InvalidPwd");
            }
            IUserRepository userRepository = IoC.Container.Resolve <IUserRepository>();
            User            userProfile    = userRepository.GetByEmail(request.Email);

            if (userProfile == null || EncodeHelper.EncodePassword(request.Pwd) != userProfile.Password)
            {
                throw new ValidationException("Registration.SignIn.InvalidEmailOrPwd");
            }
        }
Exemplo n.º 11
0
        public async Task <bool> SignIn(UserSignInFormModel form)
        {
            var request = new UserSignInRequest
            {
                Email    = form.Email,
                Password = form.Password
            };

            var response = await signInServiceClient.SignInAsync(request);

            localStorage.SetAuthorizationTokens(response.TokenType, response.AccessToken, response.RefreshToken);

            try
            {
                await currentUserService.SyncCurrentUserInfo();
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);
                Console.WriteLine(exception.StackTrace);
            }

            return(!response.IsError);
        }
Exemplo n.º 12
0
        public async Task <ActionResult <UserLoginResponse> > SignIn([FromBody] UserSignInRequest request)
        {
            var user =
                await _authenticationService.FindUserByEmailOrLoginAndPasswordAsync(request.LoginOrEmail,
                                                                                    request.Password);

            if (user is null)
            {
                _logger.LogWarning($"{nameof(SignInIdentityController)}: user with email or login = {request.LoginOrEmail} and wrote password not exist.");

                return(new UserLoginResponse
                {
                    IsUserExists = false,
                    IsUserActive = false,
                    IsUserBlocked = false,
                    MetaInfo =
                        $"User not found with request credentials. {nameof(request.LoginOrEmail)}:{request.LoginOrEmail}"
                });
            }

            _logger.LogInformation($"{nameof(SignInIdentityController)}: user with email or login = {request.LoginOrEmail} entered the service");
            await _usersEntrancesService.LogAsync(user.Id);

            var token = new JwtUserToken(_jwtConfiguration)
            {
                Email = user.Email,
                Role  = user.Role.RoleTitle
            };

            var userLoginResponse = _mapper.Map <UserEntityReadDto, UserLoginResponse>(user);

            userLoginResponse.IsUserExists = true;
            userLoginResponse.JwtToken     = token.GetToken();

            return(userLoginResponse);
        }
Exemplo n.º 13
0
        public async Task <UserSignInResponse> OnSignInAsync(UserSignInRequest userSignIn)
        {
            var loginResponse = await _restClient.MakeApiCall <UserSignInResponse>(Constants.ApiUrl + "UserSignIn", HttpMethod.Post, userSignIn);

            return(loginResponse);
        }
Exemplo n.º 14
0
        public UserSignInResponse UserSignIn([FromBody] UserSignInRequest req)
        {
            var rep = new UserSignInResponse();

            if (req.IsOAuth)
            {
                var param = req.OAuthParam;
                var temp  = DefaultStorage.UserOAuthGet(param.Provider, param.OpenId);
                if (temp != null)
                {
                    rep.Data = DefaultStorage.UserGet(temp.Id);
                    if (rep.Data != null)
                    {
                        Task.Factory.StartNew(() => SyncUserOAuth(temp.Id, param));
                    }
                }
                else
                {
                    var user    = new User();
                    var profile = new UserProfile();

                    var now = DateTime.Now;

                    user.Guid       = Guid.NewGuid().ToString();// ObjectId.New();
                    user.Name       = param.OpenId;
                    user.Email      = string.Empty;
                    user.Mobile     = string.Empty;
                    user.Nickname   = param.OpenName;
                    user.Password   = string.Empty;
                    user.Role       = UserRole.Buyer;
                    user.Grade      = UserGrade.One;
                    user.Limitation = UserLimitation.None;
                    user.Permission = UserPermission.None;
                    user.Avatar     = string.Empty;
                    user.Status     = UserStatus.Normal;
                    user.AuthedOn   = null;
                    user.CreatedBy  = param.Provider;
                    user.CreatedOn  = now;
                    user.ModifiedBy = "app.api";

                    profile.Code         = string.Empty;
                    profile.Name         = string.Empty;
                    profile.Gender       = Gender.Secrect;
                    profile.Marital      = Marital.Secrect;
                    profile.Birthday     = null;
                    profile.Phone        = string.Empty;
                    profile.Mobile       = string.Empty;
                    profile.RegionId     = string.Empty;
                    profile.Street       = string.Empty;
                    profile.SignUpIp     = req.Ip;
                    profile.SignUpBy     = 0;
                    profile.TraceCode    = req.TraceCode;
                    profile.LastSignInIp = req.Ip;
                    profile.LastSignInOn = now;

                    user.Profile = profile;

                    var id = DefaultStorage.UserCreate(user);
                    if (id > 0)
                    {
                        user.Id    = id;
                        profile.Id = id;
                        rep.Data   = user;
                        Task.Factory.StartNew(() => CreateUserOAuth(id, param));
                    }
                    else
                    {
                        rep.Error("关联用户失败", 201);
                    }
                }
            }
            else
            {
                if (req.Uid.IsEmpty())
                {
                    rep.Error("请输入登录帐号");
                    return(rep);
                }
                if (req.Pwd.IsEmpty())
                {
                    rep.Error("请输入登录密码");
                    return(rep);
                }
                var user = DefaultStorage.UserGet(req.Uid, req.Pwd);
                if (user != null)
                {
                    rep.Data = user;
                }
                else
                {
                    rep.Error("用户名或密码错误", 200);
                    return(rep);
                }
            }
            return(rep);
        }