public permission AddPermission(objectRbac mObject, operation mOperation, string PermissionName)
 {
     throw new Exception("This method have not Implement.");
 }
 private objectRbac Mapping(objectRbac mObject)
 {
     objectRbac tempObject;
     if (mObject.objectid > 0) tempObject = ObjectSrv.Getbykey(mObject.objectid);
     else
     {
         tempObject = ObjectSrv.GetByName(mObject.name, App.AppID);
     }
     return tempObject;
 }
 public void AddObject(objectRbac mObject)
 {
     mObject.AppID = App.AppID;
     ObjectSrv.CreateNew(mObject);
 }
 public IList<operation> RoleOperationsOnObject(role mRole, objectRbac mObject)
 {
     role TempRole = Mapping(mRole);
     objectRbac TempObject = Mapping(mObject);
     if(TempRole.AppID != App.AppID || TempObject.AppID != App.AppID) return null ;
     return (from per in TempRole.Permissions where  (per.ObjectRBAC == TempObject) select per.Operation).ToList<operation>();
 }
 public IList<operation> UserOperationsOnObject(user mUser, objectRbac mObject)
 {
     IList<operation> _ret = new List<operation>();
     objectRbac TempObject = Mapping(mObject);
     IList<role> Role_Lst = AuthorizedRoles(mUser);
     foreach (role r in Role_Lst)
     {
         List<operation> operationLst = (from per in r.Permissions where  (per.ObjectRBAC == TempObject) select per.Operation).ToList<operation>();
         foreach (operation op in operationLst)
         {
             if (!_ret.Contains(op)) _ret.Add(op);
         }
     }
     return _ret;
 }
        public void RevokePermission(operation mOperation, objectRbac mObject, role mRole)
        {
            role TempRole = Mapping(mRole);
            if (TempRole == null) throw new Exception("Role Does not exist in system.");

            objectRbac tempObject = Mapping(mObject);
            operation tempOperation = Mapping(mOperation);
            if (tempOperation == null || tempObject == null) return;
            //Grant permission
            string hsql = "from permission per where per.ObjectRBAC = :ObjectRBAC AND  per.Operation = :Operation ";

            List<permission> _lst = PermissionSrv.GetbyHQuery(hsql, new SQLParam("ObjectRBAC", tempObject), new SQLParam("ObjectRBAC", tempOperation));
            permission TempPermission = (_lst == null || _lst.Count == 0) ? null : _lst[0];

            if (TempPermission != null)
            {
                if (TempRole.Permissions.Contains(TempPermission))
                {
                    TempRole.Permissions.Remove(TempPermission);
                    RoleSrv.CommitChanges();
                }
            }
        }
        public void GrantPermission(objectRbac mObject, operation mOperation, role mRole)
        {
            role TempRole = Mapping(mRole);
            if (TempRole == null) throw new Exception("Role Does not exist in system.");

            objectRbac tempObject = Mapping(mObject);
            operation tempOperation = Mapping(mOperation);

            //Grant permission
            string hsql = "from permission per where per.ObjectRBAC = :ObjectRBAC AND  per.Operation = :Operation ";

            List<permission> _lst = PermissionSrv.GetbyHQuery(hsql, new SQLParam("ObjectRBAC", tempObject), new SQLParam("ObjectRBAC", tempOperation));
            permission TempPermission = (_lst == null || _lst.Count == 0) ? null : _lst[0];
            if (TempPermission == null)
            {
                TempPermission = new permission();
                TempPermission.AppID = App.AppID;
                TempPermission.name = tempObject.name + ":" + tempOperation.name;
                TempPermission.ObjectRBAC = tempObject;
                TempPermission.Operation = tempOperation;
                PermissionSrv.CreateNew(TempPermission);
                TempRole.Permissions.Add(TempPermission);
                RoleSrv.CommitChanges();
            }

            else
            {
                if (!TempRole.Permissions.Contains(TempPermission))
                {
                    TempRole.Permissions.Add(TempPermission);
                    RoleSrv.CommitChanges();
                }
            }
        }
 public void DeleteObject(objectRbac mObject)
 {
     objectRbac tempObject = Mapping(mObject) ;
     if (tempObject != null) ObjectSrv.Delete(tempObject);
     ObjectSrv.CommitChanges();
 }
 public bool CheckAccess(session mSession, operation mOperation, objectRbac mObject)
 {
     throw new Exception("This method have not Implement.");
 }
        public void InstallObject(string mObject, string[] mOperations)
        {
            if (_App == null) return;
            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();
        }