Esempio n. 1
0
        public async Task<List<string>> Delete(int claimId)
        {
            List<string> errors = new List<string>();
            int deletedCount = 0;

            try
            {
                using (DataLayer.EFDbContext.AuthorizationContext authContext = new DataLayer.EFDbContext.AuthorizationContext())
                {
                    DataLayer.Entities.User.Claims claim = await authContext.Claims.FindAsync(claimId);
                    authContext.Claims.Remove(claim);
                    deletedCount = await authContext.SaveChangesAsync();
                    if (deletedCount <= 0)
                    {
                        errors.Add("Error deleting Claim, ClaimID: " + claimId.ToString());
                    }
                }
            }
            catch (DbEntityValidationException ex)
            {
                errors.Add(ex.ToString());
            }

            return errors;
        }
Esempio n. 2
0
        public async Task<List<string>> RevokeAllTokens(string userName)
        {
            List<string> errors = new List<string>();

            if (string.IsNullOrEmpty(userName))
            {
                errors.Add("No user specified.");
                return errors;
            }

            try
            {
                using (DataLayer.EFDbContext.AuthorizationContext authContext = new DataLayer.EFDbContext.AuthorizationContext())
                {
                    var tokens = authContext.AuthorizationTokens.Where(at => at.userName == userName);
                    foreach (var token in tokens)
                    {
                        token.isActive = false;
                    }

                    await authContext.SaveChangesAsync();
                }
            }
            catch (DbEntityValidationException ex)
            {
                errors.Add(ex.ToString());
            }

            return errors;
        }
Esempio n. 3
0
        public async Task<DataLayer.Entities.User.Claims> GetByID(int claimId)
        {
            DataLayer.Entities.User.Claims claim;

            using (DataLayer.EFDbContext.AuthorizationContext authContext = new DataLayer.EFDbContext.AuthorizationContext())
            {
                claim = await authContext.Claims.FirstOrDefaultAsync(c => c.claimId == claimId);
            }

            return claim;
        }
Esempio n. 4
0
        public async Task<List<DataLayer.Entities.User.Claims>> Get()
        {
            List<DataLayer.Entities.User.Claims> claims;

            using (DataLayer.EFDbContext.AuthorizationContext authContext = new DataLayer.EFDbContext.AuthorizationContext())
            {
                claims = await (from c in authContext.Claims select c).ToListAsync();
            }

            return claims;
        }
Esempio n. 5
0
        public async Task<ngk.DataLayer.Entities.User.Claims> Insert(DataLayer.Entities.User.Claims claim)
        {
            using (DataLayer.EFDbContext.AuthorizationContext authContext = new DataLayer.EFDbContext.AuthorizationContext())
            {
                authContext.Claims.Add(claim);
                await authContext.SaveChangesAsync();
            }

            if (claim.claimId != 0)
            {
                return claim;
            }

            return null;
        }
        public static IEnumerable<Claim> GetClaims(ApplicationUser user)
        {
            List<Claim> claims = new List<Claim>();

            using (DataLayer.EFDbContext.AuthorizationContext authContext = new DataLayer.EFDbContext.AuthorizationContext())
            {
                var claimsRoles = authContext.ClaimsRoles.Include("Claims").Include("Role").ToList();
                foreach (var claim in claimsRoles)
                {
                    claims.Add(CreateClaim(claim.claims.claimName, "1"));
                }
            }

            return claims;
        }
        protected override bool IsAuthorized(HttpActionContext actionContext)
        {
            roles = Roles.Split(',').ToList();

            if (actionContext.Request.Headers.Authorization == null)
            {
                return false;
            }

            var authToken = actionContext.Request.Headers.Authorization.Parameter;

            // check user's roles
            var userName = actionContext.RequestContext.Principal.Identity.GetUserName();
            foreach (var role in roles)
            {
                if (actionContext.RequestContext.Principal.IsInRole(role))
                {
                    unauthorizedByRole = false;
                }
            }
            if (unauthorizedByRole)
            {
                unauthorizedReason = "user_role_invalid";
                return false;
            }

            // check for existing token
            bool currentTokenActive = false;
            using (DataLayer.EFDbContext.AuthorizationContext authContext = new DataLayer.EFDbContext.AuthorizationContext())
            {
                // if any token other than the passed in token is active then it is expired and the user will be logged out
                currentTokenActive = authContext.AuthorizationTokens.Any(at => at.userName == userName && at.isActive && at.userToken == authToken);
            }

            if (!currentTokenActive)
            {
                unauthorizedReason = "single_sign_denial";
                return false;
            }

            // ensure user is minimally authed
            if (!base.IsAuthorized(actionContext))
            {
                return false;
            }

            return true;
        }
Esempio n. 8
0
        public async Task<List<string>> UpdateUser(string originalEmail, string updatedEmail, string firstName, string lastName)
        {
            List<string> errors = new List<string>();

            try
            {
                using (DataLayer.EFDbContext.AuthorizationContext authContext = new DataLayer.EFDbContext.AuthorizationContext())
                {
                    var updateUser = authContext.Users.First(u => u.Email == originalEmail);
                    updateUser.Email = updatedEmail;
                    updateUser.UserName = updatedEmail; // for now, username is email address...
                    updateUser.firstName = firstName;
                    updateUser.lastName = lastName;

                    await authContext.SaveChangesAsync();
                }
            }
            catch (DbEntityValidationException ex)
            {
                errors.Add(ex.ToString());
            }

            return errors;
        }