/// <summary>
 /// Initializes a new instance of the <see cref="SystemRoleRelationship"/> class.
 /// </summary>
 /// <param name="grantedSystemRole">The granted system role.</param>
 /// <param name="systemRole">The system role.</param>
 protected internal SystemRoleRelationship(
     SystemRole grantedSystemRole,
     SystemRole systemRole )
 {
     _grantedSystemRole = grantedSystemRole;
     _systemRole = systemRole;
 }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SystemRoleRelationship"/> class.
 /// </summary>
 /// <param name="grantedSystemRole">The granted system role.</param>
 /// <param name="systemRole">The system role.</param>
 protected internal SystemRoleRelationship(
     SystemRole grantedSystemRole,
     SystemRole systemRole)
 {
     _grantedSystemRole = grantedSystemRole;
     _systemRole        = systemRole;
 }
Example #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SystemAccountRole"/> class.
        /// </summary>
        /// <param name="systemAccount">The system account.</param>
        /// <param name="systemRole">The system role.</param>
        protected internal SystemAccountRole(SystemAccount systemAccount, SystemRole systemRole)
        {
            Check.IsNotNull(systemAccount, "System account is required.");
            Check.IsNotNull(systemRole, "System role is required.");

            _systemAccount = systemAccount;
            _systemRole    = systemRole;
        }
Example #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SystemRolePermission"/> class.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        /// <param name="systemPermission">The system permission.</param>
        protected internal SystemRolePermission(SystemRole systemRole, SystemPermission systemPermission)
        {
            Check.IsNotNull(systemRole, "System role is required.");
            Check.IsNotNull(systemPermission, "System permission is required.");

            _systemRole       = systemRole;
            _systemPermission = systemPermission;
        }
Example #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SystemRolePermission"/> class.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        /// <param name="systemPermission">The system permission.</param>
        protected internal SystemRolePermission( SystemRole systemRole, SystemPermission systemPermission )
        {
            Check.IsNotNull ( systemRole, "System role is required." );
            Check.IsNotNull ( systemPermission, "System permission is required." );

            _systemRole = systemRole;
            _systemPermission = systemPermission;
        }
Example #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SystemAccountRole"/> class.
        /// </summary>
        /// <param name="systemAccount">The system account.</param>
        /// <param name="systemRole">The system role.</param>
        protected internal SystemAccountRole( SystemAccount systemAccount, SystemRole systemRole )
        {
            Check.IsNotNull ( systemAccount, "System account is required." );
            Check.IsNotNull ( systemRole, "System role is required." );

            _systemAccount = systemAccount;
            _systemRole = systemRole;
        }
Example #7
0
        /// <summary>
        /// Revokes the system role.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        public virtual void RevokeSystemRole(SystemRole systemRole)
        {
            Check.IsNotNull(systemRole, "System role is required.");

            var systemRoleRelationship = _grantedSystemRoleRelationships.FirstOrDefault(sr => sr.GrantedSystemRole.Key == systemRole.Key);

            if (systemRoleRelationship != null)
            {
                _grantedSystemRoleRelationships.Remove(systemRoleRelationship);
                NotifyItemRemoved(() => GrantedSystemRoleRelationships, systemRoleRelationship);
            }
        }
Example #8
0
        /// <summary>
        /// Revokes the system role.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        public virtual void RevokeSystemRole(SystemRole systemRole)
        {
            Check.IsNotNull(systemRole, "System role is required.");

            var existingSystemRole = _systemAccountRoles.FirstOrDefault(sar => sar.SystemRole.Key == systemRole.Key);

            if (existingSystemRole != null)
            {
                _systemAccountRoles.Remove(existingSystemRole);
                NotifyItemRemoved(() => SystemAccountRoles, existingSystemRole);
            }
        }
Example #9
0
        /// <summary>
        /// Grants the system role.
        /// </summary>
        /// <remarks>
        ///  Grants the given role to this SystemRole. Roles can be hierarchical enabling adminstrators
        ///  to organize the authorization system around sets of grouped permissions.
        /// </remarks>
        /// <param name="systemRole">The role to be granted.</param>
        public virtual void GrantSystemRole(SystemRole systemRole)
        {
            Check.IsNotNull(systemRole, "System role is required.");

            DomainRuleEngine.CreateRuleEngine <SystemRole, SystemRole> (this, () => GrantSystemRole)
            .WithContext(systemRole)
            .Execute(
                () =>
            {
                var systemRoleRelationship = new SystemRoleRelationship(systemRole, this);
                _grantedSystemRoleRelationships.Add(systemRoleRelationship);
                NotifyItemAdded(() => GrantedSystemRoleRelationships, systemRoleRelationship);
            }
                );
        }
Example #10
0
        /// <summary>
        ///     Grants the given role to the system account.
        /// </summary>
        /// <param name = "systemRole">The role to be granted</param>
        public virtual void GrantSystemRole(SystemRole systemRole)
        {
            Check.IsNotNull(systemRole, "System role is required.");

            DomainRuleEngine.CreateRuleEngine <SystemAccount, SystemRole>(this, () => GrantSystemRole)
            .WithContext(systemRole)
            .Execute(
                () =>
            {
                var systemAccountRole = new SystemAccountRole(this, systemRole);
                _systemAccountRoles.Add(systemAccountRole);
                NotifyItemAdded(() => SystemAccountRoles, systemAccountRole);
            }
                );
        }
Example #11
0
        /// <summary>
        /// Creates the system role.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="description">The description.</param>
        /// <param name="systemRoleType">Type of the system role.</param>
        /// <returns>
        /// A SystemRole
        /// </returns>
        public SystemRole CreateSystemRole(string name, string description, SystemRoleType systemRoleType)
        {
            Check.IsNotNullOrWhitespace(name, "Name is required.");
            Check.IsNotNull(systemRoleType, "System role type is required.");

            SystemRole systemRole;

            var existingSystemRole = _systemRoleRepository.GetByName(name);

            if (existingSystemRole != null)
            {
                systemRole = existingSystemRole;
            }
            else
            {
                systemRole = new SystemRole(name, description, systemRoleType);
                _systemRoleRepository.MakePersistent(systemRole);
            }

            return(systemRole);
        }
Example #12
0
        /// <summary>
        /// Creates the system role.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="description">The description.</param>
        /// <param name="systemRoleType">Type of the system role.</param>
        /// <returns>
        /// A SystemRole
        /// </returns>
        public SystemRole CreateSystemRole( string name, string description, SystemRoleType systemRoleType )
        {
            Check.IsNotNullOrWhitespace(name, "Name is required.");
            Check.IsNotNull(systemRoleType, "System role type is required.");

            SystemRole systemRole;

            var existingSystemRole = _systemRoleRepository.GetByName( name );

            if (existingSystemRole != null)
            {
                systemRole = existingSystemRole;
            }
            else
            {
                systemRole = new SystemRole( name, description, systemRoleType );
                _systemRoleRepository.MakePersistent( systemRole );
            }

            return systemRole;
        }
Example #13
0
 /// <summary>
 /// Remove task role.
 /// </summary>
 /// <param name="taskRole">
 /// The task role.
 /// </param>
 public virtual void RemoveTaskRole( SystemRole taskRole )
 {
     RemoveSystemRole ( taskRole, SystemRoleType.Task );
 }
Example #14
0
        /// <summary>
        /// Destroys the system role.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        public void DestroySystemRole(SystemRole systemRole)
        {
            Check.IsNotNull(systemRole, "System role is required");

            _systemRoleRepository.MakeTransient(systemRole);
        }
Example #15
0
        /// <summary>
        /// Revokes the system role.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        public virtual void RevokeSystemRole(SystemRole systemRole)
        {
            Check.IsNotNull ( systemRole, "System role is required." );

            var existingSystemRole = _systemAccountRoles.FirstOrDefault ( sar => sar.SystemRole.Key == systemRole.Key );

            if ( existingSystemRole != null )
            {
                _systemAccountRoles.Remove ( existingSystemRole );
                NotifyItemRemoved ( () => SystemAccountRoles, existingSystemRole );
            }
        }
Example #16
0
        /// <summary>
        ///     Grants the given role to the system account.
        /// </summary>
        /// <param name = "systemRole">The role to be granted</param>
        public virtual void GrantSystemRole( SystemRole systemRole )
        {
            Check.IsNotNull(systemRole, "System role is required.");

            DomainRuleEngine.CreateRuleEngine<SystemAccount, SystemRole>(this, () => GrantSystemRole)
                .WithContext(systemRole)
                .Execute(
                    () =>
                    {
                        var systemAccountRole = new SystemAccountRole(this, systemRole);
                        _systemAccountRoles.Add(systemAccountRole);
                        NotifyItemAdded ( () => SystemAccountRoles, systemAccountRole );
                    }
                );
        }
Example #17
0
        /// <summary>
        /// Initializes a new instance of the <see cref="StaffSystemRole"/> class.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        public StaffSystemRole( SystemRole systemRole )
        {
            Check.IsNotNull ( systemRole, () => SystemRole );

            _systemRole = systemRole;
        }
Example #18
0
        /// <summary>
        /// Removes the system role.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        /// <param name="systemRoleType">Type of the system role.</param>
        private void RemoveSystemRole( SystemRole systemRole, SystemRoleType systemRoleType )
        {
            Check.IsNotNull ( systemRole, "System role is required." );

            if ( systemRole.SystemRoleType != systemRoleType )
            {
                throw new ArgumentException ( string.Format ( ( string )"The type of the role is not a {0} role. ", ( object )systemRoleType ) );
            }

            StaffSystemRole existingSystemRole = ( from sa in _systemRoles where sa.SystemRole.Key == systemRole.Key select sa ).FirstOrDefault ();
            if ( existingSystemRole != null )
            {
                _systemRoles.Remove ( existingSystemRole );
            }

            NotifyItemRemoved ( () => SystemRoles, existingSystemRole );
        }
Example #19
0
        /// <summary>
        /// Checks the role assignment.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        /// <param name="systemRoleType">Type of the system role.</param>
        private void CheckRoleAssignment( SystemRole systemRole, SystemRoleType systemRoleType )
        {
            Check.IsNotNull ( systemRole, "System role is required." );

            if ( systemRole.SystemRoleType != systemRoleType )
            {
                throw new ArgumentException ( string.Format ( ( string )"The type of the role is not a {0} role. ", ( object )systemRoleType ) );
            }

            StaffSystemRole existingStaffSystemRole =
                ( from sr in _systemRoles where sr.SystemRole.Key == systemRole.Key select sr ).FirstOrDefault ();
            if ( existingStaffSystemRole != null )
            {
                throw new InvalidOperationException("The same has already been Assigned.");
            }
        }
Example #20
0
 /// <summary>
 /// Assign task role.
 /// </summary>
 /// <param name="taskRole">
 /// The task role.
 /// </param>
 public virtual void AssignTaskRole( SystemRole taskRole )
 {
     AssignSystemRole ( taskRole, SystemRoleType.Task );
 }
Example #21
0
        /// <summary>
        /// Grants the system role.
        /// </summary>
        /// <remarks>
        ///  Grants the given role to this SystemRole. Roles can be hierarchical enabling adminstrators
        ///  to organize the authorization system around sets of grouped permissions.
        /// </remarks>
        /// <param name="systemRole">The role to be granted.</param>
        public virtual void GrantSystemRole( SystemRole systemRole )
        {
            Check.IsNotNull ( systemRole, "System role is required." );

            DomainRuleEngine.CreateRuleEngine<SystemRole, SystemRole> ( this, () => GrantSystemRole )
                .WithContext (systemRole )
                .Execute (
                    () =>
                        {
                            var systemRoleRelationship = new SystemRoleRelationship ( systemRole, this );
                            _grantedSystemRoleRelationships.Add ( systemRoleRelationship );
                            NotifyItemAdded ( () => GrantedSystemRoleRelationships, systemRoleRelationship );
                        }
                );
        }
Example #22
0
        /// <summary>
        /// Destroys the system role.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        public void DestroySystemRole( SystemRole systemRole )
        {
            Check.IsNotNull(systemRole, "System role is required");

            _systemRoleRepository.MakeTransient ( systemRole );
        }
Example #23
0
        /// <summary>
        /// Revise job function role.
        /// </summary>
        /// <param name="jobFunctionRole">
        /// The job function role.
        /// </param>
        public virtual void ReviseJobFunctionRole( SystemRole jobFunctionRole )
        {
            CheckRoleAssignment ( jobFunctionRole, SystemRoleType.JobFunction );

            var existingJobFunctionRoles =
                ( from sr in _systemRoles where sr.SystemRole.SystemRoleType == SystemRoleType.JobFunction select sr ).ToList ();

            foreach ( var existingJobFunctionRole in existingJobFunctionRoles )
            {
                _systemRoles.Remove ( existingJobFunctionRole );
            }

            var staffSystemRole = new StaffSystemRole ( jobFunctionRole ) { Staff = this };
            _systemRoles.Add ( staffSystemRole );

            NotifyItemAdded ( () => SystemRoles, staffSystemRole );
        }
Example #24
0
        /// <summary>
        /// Revokes the system role.
        /// </summary>
        /// <param name="systemRole">The system role.</param>
        public virtual void RevokeSystemRole( SystemRole systemRole )
        {
            Check.IsNotNull ( systemRole, "System role is required." );

            var systemRoleRelationship = _grantedSystemRoleRelationships.FirstOrDefault ( sr => sr.GrantedSystemRole.Key == systemRole.Key );
            if (systemRoleRelationship != null)
            {
                _grantedSystemRoleRelationships.Remove ( systemRoleRelationship );
                NotifyItemRemoved ( () => GrantedSystemRoleRelationships, systemRoleRelationship );
            }
        }
Example #25
0
        /// <summary>
        /// Assign system role.
        /// </summary>
        /// <param name="systemRole">
        /// The system role.
        /// </param>
        /// <param name="systemRoleType">
        /// The system role type.
        /// </param>
        private void AssignSystemRole( SystemRole systemRole, SystemRoleType systemRoleType )
        {
            CheckRoleAssignment ( systemRole, systemRoleType );

            var staffSystemRole = new StaffSystemRole ( systemRole ) { Staff = this };
            _systemRoles.Add ( staffSystemRole );

            NotifyItemAdded ( () => SystemRoles, staffSystemRole );
        }