Ejemplo n.º 1
0
        /// <summary>
        /// بررسی وجود نقش برای کاربر
        /// </summary>
        public bool IsInRole(string userName, string roleName)
        {
            fullUserName = GetUserNameWithoutDomain(userName) + _fullDomainName;
            try
            {
                WindowsIdentity wi      = new WindowsIdentity(fullUserName);
                AzmanSid        sid     = new AzmanSid(wi);
                var             storage = new SqlAzManStorage(_azManConnectionString);
                storage.OpenConnection();
                //اگر نقش مورد نظر موجود بود
                if (RoleExists(roleName))
                {
                    IAzManItem            itemRole       = storage[_storageName][_applicationName][roleName];
                    IAzManAuthorization[] authorizations = itemRole.GetAuthorizations();
                    //اگر کاربر با این نقش احراز هویت شده
                    result = authorizations.Any(i => i.SID.StringValue == sid.StringValue);
                }

                storage.CloseConnection();
            }
            catch (Exception ex)
            {
                //log ex
            }

            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// حذف نقش از کاربر
        /// </summary>
        public bool RemoveUserFromRole(string userName, string role)
        {
            fullUserName = GetUserNameWithoutDomain(userName) + _fullDomainName;

            try
            {
                WindowsIdentity wi  = new WindowsIdentity(fullUserName);
                AzmanSid        sid = new AzmanSid(wi);

                IAzManStorage storage = new SqlAzManStorage(_azManConnectionString);

                storage.OpenConnection();
                //دریافت نقش
                IAzManItem itemRole = storage[_storageName][_applicationName][role];

                //دریافت اطلاعات کاربرانی که با این نقش احراز هویت شده اند
                IAzManAuthorization[] authorizations = itemRole.GetAuthorizations();
                var userAuth = authorizations.FirstOrDefault(a => a.SID.StringValue == sid.StringValue);
                if (userAuth != null)
                {
                    userAuth.Delete();
                }

                storage.CloseConnection();
                result = true;
            }
            catch (Exception ex)
            {
                //log ex
            }

            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// افزودن نقش به کاربر
        /// </summary>
        public bool AddUserToRole(string userName, string roleName)
        {
            try
            {
                WindowsIdentity wi      = new WindowsIdentity(GetUserNameWithoutDomain(userName) + _fullDomainName);
                AzmanSid        sid     = new AzmanSid(wi);
                IAzManStorage   storage = new SqlAzManStorage(_azManConnectionString);
                storage.OpenConnection();
                //اگر نقش مورد نظر در ای زد من تعریف شده بود
                if (RoleExists(roleName))
                {
                    IAzManItem itemRole = storage[_storageName][_applicationName][roleName];
                    //نقش به کاربر اختصاص داده شود
                    IAzManAuthorization auth = itemRole.CreateAuthorization(sid, WhereDefined.LDAP, sid, WhereDefined.LDAP, AuthorizationType.Allow, null, null);
                }

                storage.CloseConnection();
                result = true;
            }
            catch (Exception ex)
            {
                //log ex
            }

            return(result);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// دریافت لیست نقش های کاربر
        /// </summary>
        public IEnumerable <RoleOutput> GetUserRolesByUserName(string Username)
        {
            var userRoles = new List <RoleOutput>();

            try
            {
                IAzManStorage storage = new SqlAzManStorage(_azManConnectionString);
                storage.OpenConnection();
                //دریافت لیست نقش ها
                IAzManItem[] azManRoles = storage[_storageName][_applicationName].GetItems(ItemType.Role);
                storage.CloseConnection();

                var             fullUserName = GetUserNameWithoutDomain(Username) + _fullDomainName;
                WindowsIdentity wi           = new WindowsIdentity(fullUserName);
                foreach (IAzManItem role in azManRoles)
                {
                    AuthorizationType AuthType = role.CheckAccess(wi, DateTime.Now, new KeyValuePair <string, object> [0]);

                    if (AuthType == AuthorizationType.Allow || AuthType == AuthorizationType.AllowWithDelegation)
                    {
                        AzmanSid sid = new AzmanSid(wi);
                        if (role.GetAuthorizationsOfMember(sid)[0].Attributes.Keys.Contains("IsActive"))
                        {
                            if (!Convert.ToBoolean(role.GetAuthorizationsOfMember(sid)[0].Attributes["IsActive"].Value))
                            {
                                continue;
                            }
                        }
                        //اگر نقش برای این کاربر مجاز بود به لیست اضافه شود
                        userRoles.Add(new RoleOutput {
                            Name = role.Name, Description = role.Description
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                //log
            }

            return(userRoles);
        }