예제 #1
0
        public ActionResult SignIn(UserSigninVM model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var response = AccountService.SignInUser(model);

            if (response.Success)
            {
                base.SignUserIn(response.UserId, response.UserEmail, model.RememberMe);
                return(ReturnTo(returnUrl));
            }

            ModelState.AddModelError("", response.ErrorCode.ToDescription());
            return(View(model));
        }
예제 #2
0
        public SignInResponse SignInUser(UserSigninVM model)
        {
            if (!HasSameEmail(model.Email))
            {
                return(new SignInResponse(false, ErrorCode.NOEMAIL));
            }

            var userInDb = UnitOfWork.Users.SingleOrDefault(m => m.Email == model.Email);

            if (userInDb.IsCanceled)
            {
                return(new SignInResponse(false, ErrorCode.CANCELEDUSER));
            }

            var salt          = userInDb.Salt;
            var inputPassword = PasswordEncryptor.GenerateSHA256Hash(model.Password, salt);

            if (inputPassword != userInDb.Password)
            {
                return(new SignInResponse(false, ErrorCode.PASSWORDNOTMATCH));
            }

            return(new SignInResponse(true, userInDb.UserId, userInDb.Email));
        }