Beispiel #1
0
 public BaseController()
 {
     if (UserAuthData == null)
     {
         UserAuthData = Common.GetUserAuthData();
     }
 }
Beispiel #2
0
        private string GenerateToken(UserAuthDataViewModel userAuthData)
        {
            SymmetricSecurityKey key = new SymmetricSecurityKey(System.Text.Encoding.Default.GetBytes(GlobalConstants.Token_HashKey));

            List <Claim> claimsData = new List <Claim>();

            claimsData.Add(new Claim(GlobalConstants.Key_LoggedUserInfo, new JavaScriptSerializer().Serialize(userAuthData)));

            var token = new JwtSecurityToken(
                issuer: GlobalConstants.Token_Issuer,
                claims: claimsData,
                notBefore: DateTime.UtcNow,
                expires: DateTime.UtcNow.AddMinutes(GlobalConstants.SessionTime_InMinutes),
                signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
                );

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }
Beispiel #3
0
        public static UserAuthDataViewModel GetUserAuthData()
        {
            UserAuthDataViewModel userAuthData = null;

            if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated)
            {
                if (HttpContext.Current.User.Identity.IsAuthenticated)
                {
                    var identity     = (ClaimsIdentity)HttpContext.Current.User.Identity;
                    var userIdentity = identity.Claims.FirstOrDefault(c => c.Type == "UserAuthData");
                    if (userIdentity != null)
                    {
                        userAuthData = new JavaScriptSerializer().Deserialize <UserAuthDataViewModel>(userIdentity.Value);
                    }
                }
            }

            return(userAuthData);
        }
Beispiel #4
0
        public override void OnAuthorization(HttpActionContext actionContext)
        {
            HttpResponseMessage   response     = null;
            UserAuthDataViewModel userAuthData = Common.GetUserAuthData();

            if (HttpContext.Current.User.Identity.IsAuthenticated && userAuthData != null)
            {
                if (Roles != null && Roles.Length > 0)
                {
                    var userRoles = userAuthData.Roles;
                    if (userRoles != null && userRoles.Count > 0)
                    {
                        var roleExists = (from ur in userRoles
                                          join ar in Roles
                                          on ur equals ar
                                          select ur).Any();

                        if (!roleExists)
                        {
                            response = new HttpResponseMessage(HttpStatusCode.Forbidden);
                        }
                    }
                    else
                    {
                        response = new HttpResponseMessage(HttpStatusCode.Forbidden);
                    }
                }
            }
            else
            {
                response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
            }

            if (response != null)
            {
                actionContext.Response = response;
            }
            else
            {
                base.OnAuthorization(actionContext);
            }
        }
Beispiel #5
0
        public IHttpActionResult Post(LoginViewModel loginViewModel)
        {
            if (loginViewModel != null && ModelState.IsValid)
            {
                var loginModel = Mapper.Map <LoginModel>(loginViewModel);
                var userData   = _userService.Login(loginModel);

                if (userData != null)
                {
                    UserAuthDataViewModel userAuthData = Mapper.Map <UserAuthDataViewModel>(userData);

                    string token = GenerateToken(userAuthData);
                    return(Ok(token));
                }
                else
                {
                    return(Unauthorized());
                }
            }
            else
            {
                return(Unauthorized());
            }
        }