///<summary>Pass in the user and all of the userGroups that the user should be attached to. ///Detaches the userCur from any usergroups that are not in the given list. ///Returns a count of how many user group attaches were affected.</summary> public static long SyncForUser(Userod userCur, List <long> listUserGroupNums) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetLong(MethodBase.GetCurrentMethod(), userCur, listUserGroupNums)); } long rowsChanged = 0; foreach (long userGroupNum in listUserGroupNums) { if (!userCur.IsInUserGroup(userGroupNum)) { UserGroupAttach userGroupAttach = new UserGroupAttach(); userGroupAttach.UserGroupNum = userGroupNum; userGroupAttach.UserNum = userCur.UserNum; Crud.UserGroupAttachCrud.Insert(userGroupAttach); rowsChanged++; } } foreach (UserGroupAttach userGroupAttach in UserGroupAttaches.GetForUser(userCur.UserNum)) { if (!listUserGroupNums.Contains(userGroupAttach.UserGroupNum)) { Crud.UserGroupAttachCrud.Delete(userGroupAttach.UserGroupAttachNum); rowsChanged++; } } return(rowsChanged); }
///<summary>Does not add a new usergroupattach if the passed-in userCur is already attached to userGroup.</summary> public static void AddForUser(Userod userCur, long userGroupNum) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { Meth.GetVoid(MethodBase.GetCurrentMethod(), userCur, userGroupNum); return; } if (!userCur.IsInUserGroup(userGroupNum)) { UserGroupAttach userGroupAttach = new UserGroupAttach(); userGroupAttach.UserGroupNum = userGroupNum; userGroupAttach.UserNum = userCur.UserNum; Crud.UserGroupAttachCrud.Insert(userGroupAttach); } }
///<summary>Determines whether an individual user has a specific permission.</summary> public static bool HasPermission(Userod user, Permissions permType, long fKey) { //No need to check RemotingRole; no call to db. GroupPermission groupPermission = GetFirstOrDefault(x => x.PermType == permType && x.FKey == fKey && user.IsInUserGroup(x.UserGroupNum)); return(groupPermission != null); }