Exemplo n.º 1
0
        private SecurityPrincipal CreateSecurityPrincipal(ClientTransaction transaction)
        {
            using (SecurityFreeSection.Activate())
            {
                string user = GetUser(transaction).UserName;
                ISecurityPrincipalRole role = null;

                string substitutedUser = null;
                ISecurityPrincipalRole substitutedRole = null;

                Substitution substitution = GetSubstitution(transaction);
                if (substitution != null)
                {
                    substitutedUser = substitution.SubstitutedUser.UserName;
                    if (substitution.SubstitutedRole != null)
                    {
                        substitutedRole = new SecurityPrincipalRole(
                            substitution.SubstitutedRole.Group.UniqueIdentifier,
                            substitution.SubstitutedRole.Position.UniqueIdentifier);
                    }
                }

                return(new SecurityPrincipal(user, role, substitutedUser, substitutedRole));
            }
        }
Exemplo n.º 2
0
        public SecurityPrincipal(string user, ISecurityPrincipalRole role, string substitutedUser, ISecurityPrincipalRole substitutedRole)
        {
            ArgumentUtility.CheckNotNullOrEmpty("user", user);
            ArgumentUtility.CheckNotEmpty("substitutedUser", substitutedUser);
            if (substitutedRole != null && substitutedUser == null)
            {
                throw new ArgumentException("The substituted user must be specified if a substituted role is also specified.", "substitutedUser");
            }

            _user            = user;
            _substitutedRole = substitutedRole;
            _substitutedUser = substitutedUser;
            _role            = role;
        }
Exemplo n.º 3
0
        private bool IsRoleMatchingPrincipalRole(Role role, ISecurityPrincipalRole principalRole)
        {
            if (role == null)
            {
                return(false);
            }

            var principalPositionHandle = _securityContextRepository.GetPosition(principalRole.Position);

            if (!principalPositionHandle.Equals(role.Position.GetHandle()))
            {
                return(false);
            }

            var principalRoleGroupHandle = _securityContextRepository.GetGroup(principalRole.Group);

            if (!principalRoleGroupHandle.Equals(role.Group.GetHandle()))
            {
                return(false);
            }

            return(true);
        }