예제 #1
0
        public async Task <ApiResult <SignInViewModel> > SignIn(SignInViewModel model)
        {
            var signInResult = await _userRepository.SignIn(model);

            var result = new ApiResult <SignInViewModel>();

            if (!signInResult.Success && signInResult.MessageType != MessageType.Success)
            {
                result.Success     = false;
                result.Data        = null;
                result.Info        = signInResult.Info;
                result.Message     = signInResult.Message;
                result.MessageType = signInResult.MessageType;

                return(result);
            }

            var timeSpan = model.RememberMe ? TimeSpan.FromDays(30) : TimeSpan.FromHours(1);
            var maxAge   = model.RememberMe ? TimeSpan.FromDays(180) : TimeSpan.FromDays(1);

            var cookie = new AuthenticationCookieViewModel()
            {
                PhoneNumber    = signInResult.Data.PhoneNumber,
                UserId         = signInResult.Data.Id,
                Password       = signInResult.Data.Password,
                RememberMe     = model.RememberMe,
                MaxAgeDateTime = DateTime.Now.Add(maxAge)
            };

            var cookieOptions = new CookieOptions()
            {
                Expires = DateTimeOffset.Now.Add(timeSpan),
                MaxAge  = maxAge,
            };

            _authenticationCookieService.Set(HttpContext, cookie, cookieOptions);

            var session = new AuthenticationSessionViewModel()
            {
                UserId       = signInResult.Data.Id,
                UserFullName = signInResult.Data.Fullname
            };

            _authentcationSessionService.Set(HttpContext, session);

            result.Success     = true;
            result.Data        = signInResult.Data;
            result.Info        = signInResult.Info;
            result.Message     = signInResult.Message;
            result.MessageType = signInResult.MessageType;

            return(result);
        }
예제 #2
0
        public void Set(HttpContext context, AuthenticationCookieViewModel cookieViewModel, CookieOptions options)
        {
            var cipherAuthenticationCookie =
                _cryptographyService.Encrypt(cookieViewModel, _encryptionKey);


            if (!options.Expires.HasValue)
            {
                var timeSpan = cookieViewModel.RememberMe ? TimeSpan.FromDays(30) : TimeSpan.FromHours(1);
                options.Expires = DateTimeOffset.Now.Add(timeSpan);
            }

            if (!options.MaxAge.HasValue)
            {
                var maxAge = cookieViewModel.RememberMe ? TimeSpan.FromDays(180) : TimeSpan.FromDays(1);
                options.MaxAge = maxAge;
            }

            context.Response.Cookies.Append(cipherAuthenticationCookie, _cookieName, options);
        }
예제 #3
0
 public bool CheckUserCookie(AuthenticationCookieViewModel authenticationCookie)
 {
     return(authenticationCookie != null);
 }
예제 #4
0
        public void Update(HttpContext context, AuthenticationCookieViewModel cookie, CookieOptions options)
        {
            Remove(context);

            Set(context, cookie, options);
        }