/// <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); }
/// <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); }
/// <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); }
/// <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); }