Beispiel #1
0
        public void UnInstallObject(string mObject)
        {
            if (_App == null)
            {
                return;
            }
            IoperationService  OperationSrv  = new operationService(SessionFactoryConfigPath);
            IobjectService     ObjectSrv     = new objectService(SessionFactoryConfigPath);
            IpermissionService PermissionSrv = new permissionService(SessionFactoryConfigPath);
            objectRbac         tempObject    = ObjectSrv.GetByName(mObject, _App.AppID);

            if (tempObject == null)
            {
                return;
            }
            string             HQL     = "from permission per where per.ObjectRBAC = :ObjectRBAC";
            IList <permission> PerList = PermissionSrv.GetbyHQuery(HQL, new SQLParam("ObjectRBAC", tempObject));

            foreach (permission per in PerList)
            {
                per.Roles.Clear();
                PermissionSrv.Delete(per);
            }
            ObjectSrv.Delete(tempObject);
            ObjectSrv.CommitChanges();
        }
Beispiel #2
0
        /// <summary>
        /// remove all oldrole assign for the permission and assign new [mRoles] for the permission
        /// </summary>
        /// <param name="mObject"></param>
        /// <param name="mOperation"></param>
        /// <param name="mRoles"></param>
        public void UpdatePermission(string mObject, string mOperation, string[] mRoles)
        {
            if (_App == null)
            {
                return;
            }

            IroleService RoleSrv = new roleService(SessionFactoryConfigPath);
            string       HQL     = "from role r where r.AppID = :AppID AND r.name in ({0})";
            string       ParaStr = ":" + string.Join(",:", mRoles);

            HQL = string.Format(HQL, ParaStr);
            SQLParam[] paramList = new SQLParam[mRoles.Length + 1];
            paramList[0] = new SQLParam("AppID", _App.AppID);
            for (int i = 0; i < mRoles.Length; i++)
            {
                paramList[i + 1] = new SQLParam(mRoles[i], mRoles[i]);
            }
            //List<role> RoleLst = RoleSrv.GetbyHQuery(HQL, new SQLParam("rolenames", string.Join(",",mRoles)), new SQLParam("AppID", _App.AppID));
            List <role> RoleLst = RoleSrv.GetbyHQuery(HQL, paramList);

            if (RoleLst == null || RoleLst.Count == 0)
            {
                return;
            }
            //Grant permission
            IpermissionService PermissionSrv  = new permissionService(SessionFactoryConfigPath);
            permission         TempPermission = PermissionSrv.GetPermission(mObject, mOperation, _App.AppID);

            if (TempPermission != null)
            {
                List <role> TmpRolseLst = new List <role>();
                foreach (role r in TempPermission.Roles)
                {
                    if (!RoleLst.Contains(r))
                    {
                        TmpRolseLst.Add(r);
                    }
                }

                foreach (role r in TmpRolseLst)
                {
                    TempPermission.Roles.Remove(r);
                }

                foreach (role r in RoleLst)
                {
                    if (!TempPermission.Roles.Contains(r))
                    {
                        TempPermission.Roles.Add(r);
                    }
                }

                PermissionSrv.CommitChanges();
            }
        }
Beispiel #3
0
        /// <summary>
        /// Return All Role wich is assign permission for Action [Operation] on [Object]
        /// </summary>
        /// <param name="Operation"></param>
        /// <param name="Object"></param>
        /// <returns></returns>
        public string[] GetRoleForOperation(string mOperation, string mObject)
        {
            IpermissionService PermissionSrv = new permissionService(SessionFactoryConfigPath);
            permission         _Per          = PermissionSrv.GetPermission(mObject, mOperation, _App.AppID);

            if (_Per != null && _Per.Roles != null)
            {
                return((from r in _Per.Roles select r.name).ToArray());
            }
            else
            {
                return new string[] { }
            };
        }
Beispiel #4
0
        public void RevokePermission(string mObject, string mOperation, string[] mRoles)
        {
            if (_App == null)
            {
                return;
            }
            //string HQL = "from role r where r.name in (:rolenames) AND r.AppID = :AppID";
            //List<role> RoleLst = RoleSrv.GetbyHQuery(HQL, new SQLParam("rolenames", mRoles), new SQLParam("AppID", _App.AppID));
            IroleService RoleSrv = new roleService(SessionFactoryConfigPath);
            string       HQL     = "from role r where r.AppID = :AppID AND r.name in ({0})";
            string       ParaStr = ":" + string.Join(",:", mRoles);

            HQL = string.Format(HQL, ParaStr);
            SQLParam[] paramList = new SQLParam[mRoles.Length + 1];
            paramList[0] = new SQLParam("AppID", _App.AppID);
            for (int i = 0; i < mRoles.Length; i++)
            {
                paramList[i + 1] = new SQLParam(mRoles[i], mRoles[i]);
            }
            List <role> RoleLst = RoleSrv.GetbyHQuery(HQL, paramList);

            if (RoleLst == null || RoleLst.Count == 0)
            {
                return;
            }

            IpermissionService PermissionSrv  = new permissionService(SessionFactoryConfigPath);
            permission         TempPermission = PermissionSrv.GetPermission(mObject, mOperation, _App.AppID);

            if (TempPermission != null)
            {
                foreach (role r in RoleLst)
                {
                    // not using r.Permissions because amount of roles allway is less than amount of Permissions. ->because perfomance
                    if (TempPermission.Roles.Contains(r))
                    {
                        TempPermission.Roles.Remove(r);
                    }
                }
                PermissionSrv.CommitChanges();
            }
        }
Beispiel #5
0
        public void InstallObject(string mObject, string[] mOperations)
        {
            if (_App == null)
            {
                return;
            }
            IoperationService  OperationSrv  = new operationService(SessionFactoryConfigPath);
            IobjectService     ObjectSrv     = new objectService(SessionFactoryConfigPath);
            IpermissionService PermissionSrv = new permissionService(SessionFactoryConfigPath);
            objectRbac         tempObject    = ObjectSrv.GetByName(mObject, _App.AppID);

            if (tempObject != null)
            {
                return;
            }
            tempObject       = new objectRbac();
            tempObject.AppID = _App.AppID;
            tempObject.name  = mObject;
            ObjectSrv.CreateNew(tempObject);
            foreach (string ope in mOperations)
            {
                operation TempOpe = OperationSrv.GetByName(ope, _App.AppID);
                if (TempOpe == null)
                {
                    TempOpe       = new operation();
                    TempOpe.name  = ope;
                    TempOpe.AppID = _App.AppID;
                    OperationSrv.CreateNew(TempOpe);
                }

                permission TempPermission = new permission();
                TempPermission.AppID      = _App.AppID;
                TempPermission.name       = tempObject.name + ":" + TempOpe.name;
                TempPermission.ObjectRBAC = tempObject;
                TempPermission.Operation  = TempOpe;
                PermissionSrv.CreateNew(TempPermission);
            }
            PermissionSrv.CommitChanges();
        }
Beispiel #6
0
        public void GrantPermission(string mObject, string mOperation, string[] mRoles)
        {
            if (_App == null)
            {
                return;
            }

            IroleService RoleSrv = new roleService(SessionFactoryConfigPath);
            string       HQL     = "from role r where r.AppID = :AppID AND r.name in ({0})";
            string       ParaStr = ":" + string.Join(",:", mRoles);

            HQL = string.Format(HQL, ParaStr);
            SQLParam[] paramList = new SQLParam[mRoles.Length + 1];
            paramList[0] = new SQLParam("AppID", _App.AppID);
            for (int i = 0; i < mRoles.Length; i++)
            {
                paramList[i + 1] = new SQLParam(mRoles[i], mRoles[i]);
            }
            List <role> RoleLst = RoleSrv.GetbyHQuery(HQL, paramList);

            if (RoleLst == null || RoleLst.Count == 0)
            {
                return;
            }
            IoperationService  OperationSrv  = new operationService(SessionFactoryConfigPath);
            IobjectService     ObjectSrv     = new objectService(SessionFactoryConfigPath);
            IpermissionService PermissionSrv = new permissionService(SessionFactoryConfigPath);
            //Grant permission
            permission TempPermission = PermissionSrv.GetPermission(mObject, mOperation, _App.AppID);

            if (TempPermission == null)
            {
                objectRbac tempObject    = ObjectSrv.GetByName(mObject, _App.AppID);
                operation  tempOperation = OperationSrv.GetByName(mOperation, _App.AppID);
                if (tempObject == null || tempOperation == null)
                {
                    return;
                }
                TempPermission            = new permission();
                TempPermission.AppID      = _App.AppID;
                TempPermission.name       = tempObject.name + ":" + tempOperation.name;
                TempPermission.ObjectRBAC = tempObject;
                TempPermission.Operation  = tempOperation;
                TempPermission.Roles      = new List <role>();
                foreach (role r in RoleLst)
                {
                    TempPermission.Roles.Add(r);
                }
                PermissionSrv.CreateNew(TempPermission);
                PermissionSrv.CommitChanges();
            }

            else
            {
                foreach (role r in RoleLst)
                {
                    if (!TempPermission.Roles.Contains(r))
                    {
                        TempPermission.Roles.Add(r);
                    }
                }
                PermissionSrv.CommitChanges();
            }
        }