예제 #1
0
        public async Task <IActionResult> Login([FromForm] LoginRequest request)
        {
            var user = await _context.Users
                       .Where(x => x.Email == request.Email.Trim()).FirstOrDefaultAsync();

            if (user == null)
            {
                return(BadRequest(new
                {
                    Message = "Tên đăng nhập hoặc mật khẩu không chính xác!"
                }));
            }

            if (user.TypeAccount != ETypeAccount.System)
            {
                return(BadRequest(new
                {
                    Message = "Vui lòng đăng nhập với tài khoản " + user.TypeAccount.ToString()
                }));
            }

            if (user.PassWord != request.Password.Trim())
            {
                return(BadRequest(new
                {
                    Message = "Tên đăng nhập hoặc mật khẩu không chính xác!"
                }));
            }

            if (user.Status == EUserStatus.IsVerifying)
            {
                var info = new LoginInfo()
                {
                    Email           = user.Email,
                    FullName        = user.FullName,
                    IsMailConfirmed = false,
                    Message         = MessageMail.VerifyMail,
                    UserId          = user.Id,
                    UserName        = user.UserName
                };

                return(BadRequest(new
                {
                    Message = MessageMail.VerifyMail
                }));
            }

            if (user.Status == EUserStatus.Inactive)
            {
                return(BadRequest(new
                {
                    Message = "Tài khoản của bạn đã bị khóa bởi quản trị viên!"
                }));
            }

            if (!await _featureApplication.CheckUserFeature(user.Id))
            {
                user.IsInfoUpdated = false;
            }

            var userResponse = new UserResponse(user, _storageService);
            var ft           = await _featureApplication.GetFeatureResponseByUserId(userResponse.Id);

            userResponse.Features       = ft.Item1;
            userResponse.SearchFeatures = ft.Item2;
            userResponse.Token          = this.GenerateJSONWebToken(user);

            return(Ok(userResponse));
        }
예제 #2
0
        public async Task <IActionResult> Login([FromForm] LoginRequest request)
        {
            var user = await _context.Users
                       .Where(x => x.Email == request.Email.Trim()).FirstOrDefaultAsync();

            if (user == null)
            {
                return(BadRequest(new
                {
                    Message = "UserName or Password is not correct!"
                }));
            }

            if (user.TypeAccount != ETypeAccount.System)
            {
                return(BadRequest(new
                {
                    Message = "Please login with " + user.TypeAccount.ToString()
                }));
            }

            if (user.PassWord != request.Password.Trim())
            {
                return(BadRequest(new
                {
                    Message = "UserName or Password is not correct!"
                }));
            }

            if (user.Status == EUserStatus.IsVerifying)
            {
                var info = new LoginInfo()
                {
                    Email           = user.Email,
                    FullName        = user.FullName,
                    IsMailConfirmed = false,
                    Message         = MessageMail.VerifyMail,
                    UserId          = user.Id,
                    UserName        = user.UserName
                };

                return(BadRequest(new
                {
                    Message = MessageMail.VerifyMail
                }));
            }

            if (user.Status == EUserStatus.Inactive)
            {
                return(BadRequest(new
                {
                    Message = "Your account has been locked!"
                }));
            }

            if (!await _featureApplication.CheckUserFeature(user.Id))
            {
                user.IsInfoUpdated = false;
            }

            var userResponse = new UserResponse(user, _storageService);
            var ft           = await _featureApplication.GetFeatureResponseByUserId(userResponse.Id);

            userResponse.Features       = ft.Item1;
            userResponse.SearchFeatures = ft.Item2;
            userResponse.Token          = this.GenerateJSONWebToken(user);

            return(Ok(userResponse));
        }