コード例 #1
0
        public bool Update(RolePrivilege roleprivilege, int old_rolePrivilegeId)
        {
            RolePrivilegeDAC roleprivilegeComponent = new RolePrivilegeDAC();

            roleprivilege.HasAccess = true;
            return(roleprivilegeComponent.UpdateRolePrivilege(roleprivilege.RoleId, roleprivilege.ContentEntityId, roleprivilege.SystemFunctionId, roleprivilege.HasAccess, DateTime.Now, old_rolePrivilegeId));
        }
コード例 #2
0
        private Account CreateAccountWithPrivilegeFor(String area, String controller, String action)
        {
            Account account = ObjectFactory.CreateAccount();
            Role    role    = ObjectFactory.CreateRole();

            account.RoleId = role.Id;

            context.Set <Account>().Add(account);

            role.RolePrivileges = new List <RolePrivilege>();
            RolePrivilege rolePrivilege = ObjectFactory.CreateRolePrivilege();
            Privilege     privilege     = ObjectFactory.CreatePrivilege();

            rolePrivilege.PrivilegeId = privilege.Id;
            rolePrivilege.Privilege   = privilege;
            rolePrivilege.RoleId      = role.Id;
            rolePrivilege.Role        = role;

            privilege.Area       = area;
            privilege.Controller = controller;
            privilege.Action     = action;

            role.RolePrivileges.Add(rolePrivilege);

            context.Set <Role>().Add(role);
            context.SaveChanges();
            provider.Refresh();

            return(account);
        }
コード例 #3
0
        private Account CreateAccountWithPrivilegeFor(String area, String controller, String action, Boolean isLocked = false)
        {
            using (TestingContext context = new TestingContext())
            {
                Account account = ObjectFactory.CreateAccount();
                Role    role    = ObjectFactory.CreateRole();
                account.IsLocked = isLocked;
                account.RoleId   = role.Id;
                account.Role     = role;

                role.RolePrivileges = new List <RolePrivilege>();
                RolePrivilege rolePrivilege = ObjectFactory.CreateRolePrivilege();
                Privilege     privilege     = ObjectFactory.CreatePrivilege();
                rolePrivilege.PrivilegeId = privilege.Id;
                rolePrivilege.Privilege   = privilege;
                rolePrivilege.RoleId      = role.Id;
                rolePrivilege.Role        = role;

                privilege.Controller = controller;
                privilege.Action     = action;
                privilege.Area       = area;

                role.RolePrivileges.Add(rolePrivilege);

                context.Set <Account>().Add(account);
                context.SaveChanges();

                SetUpDependencyResolver();
                provider.Refresh();

                return(account);
            }
        }
コード例 #4
0
        private Role CreateRoleWithPrivileges()
        {
            String[] actions     = { "Edit", "Delete" };
            String[] controllers = { "Roles", "Profile" };

            Int32 privilegeNumber = 1;
            Role  role            = ObjectFactory.CreateRole();

            role.RolePrivileges = new List <RolePrivilege>();

            foreach (String controller in controllers)
            {
                foreach (String action in actions)
                {
                    RolePrivilege rolePrivilege = ObjectFactory.CreateRolePrivilege(privilegeNumber++);
                    rolePrivilege.Privilege = new Privilege {
                        Controller = controller, Action = action
                    };
                    rolePrivilege.Privilege.Area = controller != "Roles" ? "Administration" : null;
                    rolePrivilege.Privilege.Id   = rolePrivilege.Id;
                    rolePrivilege.PrivilegeId    = rolePrivilege.Id;
                    rolePrivilege.RoleId         = role.Id;
                    rolePrivilege.Role           = role;

                    role.RolePrivileges.Add(rolePrivilege);
                }
            }

            return(role);
        }
コード例 #5
0
        public ActionResult EditPrivileges(int RoleId, int[] SelectedGroups)
        {
            if (ModelState.IsValid)
            {
                List <int> RolePrivileges = (from s in db.Privileges join ur in db.RolePrivileges on s.Id equals ur.PrivilegeId where ur.RoleId == RoleId select s.Id).ToList();

                foreach (int i in SelectedGroups)
                {
                    if (!RolePrivileges.Contains(i))
                    {
                        RolePrivilege ur = new RolePrivilege();

                        ur.RoleId      = RoleId;
                        ur.PrivilegeId = i;
                        ur.Id          = db.RolePrivileges.OrderByDescending(c => c.Id).Select(c => c.Id).FirstOrDefault() + 1;
                        db.RolePrivileges.Add(ur);
                        db.SaveChanges();
                    }
                }
                foreach (int j in RolePrivileges)
                {
                    if (!SelectedGroups.Contains(j))
                    {
                        RolePrivilege ur = db.RolePrivileges.Where(c => c.RoleId == RoleId && c.PrivilegeId == j).FirstOrDefault();

                        db.RolePrivileges.Remove(ur);
                        db.SaveChanges();
                    }
                }
                //db.Entry(user).State = EntityState.Modified;
                //db.SaveChanges();
                //return RedirectToAction("Index");
            }
            return(RedirectToAction("Index"));
        }
コード例 #6
0
        public int Save(RolePrivilege obj)
        {
            var result = 0;

            try
            {
                var row = _context.db.GetAll <RolePrivilege>()
                          .Where(f => f.menu_id == obj.menu_id && f.role_id == obj.role_id && f.grant_id == obj.grant_id)
                          .Count();

                var sql = string.Empty;
                if (row == 0)
                {
                    sql = @"INSERT INTO m_role_privilege (role_id, menu_id, grant_id, is_grant)
                            VALUES (@role_id, @menu_id, @grant_id, @is_grant)";
                }
                else
                {
                    sql = @"UPDATE m_role_privilege SET is_grant = @is_grant
                            WHERE role_id = @role_id AND menu_id = @menu_id AND grant_id = @grant_id";
                }

                _context.db.Execute(sql, obj);
                result = 1;
            }
            catch (Exception ex)
            {
                _log.Error("Error:", ex);
            }

            return(result);
        }
コード例 #7
0
        /// <summary>
        /// Add a existing <c>Privilege</c> with name (<c>prv</c> prefix) to a <c>Role</c>.
        /// </summary>
        /// <param name="roleName">Role name</param>
        /// <param name="privilegeName">Privilege name with <c>prv</c> prefix</param>
        /// <param name="depth"><see cref="PrivilegeDepth"/></param>
        /// <returns><see cref="AddPrivilegesRoleResponse"/></returns>
        public AddPrivilegesRoleResponse AddPrivilege(string roleName, string privilegeName, PrivilegeDepth depth)
        {
            ExceptionThrow.IfNullOrEmpty(privilegeName, "privilegeName");
            ExceptionThrow.IfNullOrEmpty(roleName, "roleName");

            Guid id = GetId(roleName);

            ExceptionThrow.IfGuidEmpty(id, "id", string.Format("'{0}' not found", roleName));

            PrivilegeHelper privilegeHelper = new PrivilegeHelper(this.OrganizationService);
            var             privilegeList   = privilegeHelper.GetPredefinedPrivileges();

            ExceptionThrow.IfNull(privilegeList, "privilegeList", "System pre-defined privileges not found (001)");
            ExceptionThrow.IfNullOrEmpty(privilegeList.Entities, "privilegeList.Entities", "System pre-defined privileges not found (002)");

            var existingRole = privilegeList.Entities.Where(d => d["name"].Equals(privilegeName)).SingleOrDefault();

            ExceptionThrow.IfNull(existingRole, "Privilege", string.Format("'{0}' privilege not found", privilegeName));

            RolePrivilege privilege = new RolePrivilege()
            {
                Depth = depth, PrivilegeId = existingRole.Id
            };

            return(AddPrivilege(id, privilege));
        }
コード例 #8
0
        private void SetUpData()
        {
            Account account = ObjectFactory.CreateAccount();

            role           = ObjectFactory.CreateRole();
            account.RoleId = role.Id;

            context.Set <Account>().Add(account);

            role.RolePrivileges = new List <RolePrivilege>();

            Int32 privilegeNumber            = 1;
            IEnumerable <String> controllers = new[] { "Accounts", "Roles" };
            IEnumerable <String> actions     = new[] { "Index", "Create", "Details", "Edit", "Delete" };

            foreach (String controller in controllers)
            {
                foreach (String action in actions)
                {
                    RolePrivilege rolePrivilege = ObjectFactory.CreateRolePrivilege(privilegeNumber++);
                    rolePrivilege.Privilege = new Privilege {
                        Area = "Administration", Controller = controller, Action = action
                    };
                    rolePrivilege.Privilege.Id = rolePrivilege.Id;
                    rolePrivilege.PrivilegeId  = rolePrivilege.Id;
                    rolePrivilege.RoleId       = role.Id;
                    rolePrivilege.Role         = role;

                    role.RolePrivileges.Add(rolePrivilege);
                }
            }

            context.Set <Role>().Add(role);
            context.SaveChanges();
        }
コード例 #9
0
        public string SaveUpdateRolePrivilege(RolePrivilege objRolePrivilege, SqlConnection con, SqlTransaction trans)
        {
            SqlCommand com = null;

            try
            {
                com             = new SqlCommand("spSaveOrUpdateRolePrivilege", con, trans);
                com.CommandType = CommandType.StoredProcedure;
                com.Parameters.Add("@Role", SqlDbType.VarChar, 50).Value          = objRolePrivilege.Role;
                com.Parameters.Add("@FriendlyName", SqlDbType.VarChar, 100).Value = objRolePrivilege.FriendlyName;
                com.Parameters.Add("@CanEdit", SqlDbType.TinyInt).Value           = objRolePrivilege.CanEdit;
                com.Parameters.Add("@CanDelete", SqlDbType.TinyInt).Value         = objRolePrivilege.CanDelete;
                com.Parameters.Add("@CanAdd", SqlDbType.TinyInt).Value            = objRolePrivilege.CanAdd;
                com.Parameters.Add("@CanView", SqlDbType.TinyInt).Value           = objRolePrivilege.CanView;
                com.Parameters.Add("@CompanyID", SqlDbType.Int).Value             = LogInInfo.CompanyID;
                com.ExecuteNonQuery();
            }
            catch (Exception Ex)
            {
                throw new Exception(Ex.Message);
            }


            return(objRolePrivilege.Role);
        }
コード例 #10
0
        private void Revoke(String privilege, String user)
        {
            RolePrivilegeBuilder builder = new RolePrivilegeBuilder(this.currentPrivilege);
            RolePrivilege        pri     = builder.Grantee(new GranteeClauseBuilder().Grantee(user))
                                           .Build();

            this.privilegeBLL.RevokeRolePrivilege(pri);
        }
コード例 #11
0
        public ActionResult DeleteConfirmed(int id)
        {
            RolePrivilege rolePrivilege = db.RolePrivileges.Find(id);

            db.RolePrivileges.Remove(rolePrivilege);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #12
0
ファイル: SecurityDAL.cs プロジェクト: charan148/NewProject
        /// <summary>Insert or Update RolesPrivilege.</summary>
        /// <param name="privilegeList">The List of IntegerColumn Object.</param>
        /// <param name="role">The RolePrivilege Object.</param>
        /// <returns>Boolean Object.</returns>
        public bool RolePrivilegeUpsert(List <IntegerColumn> privilegeList, RolePrivilege role)
        {
            Logging.LogDebugMessage("Method: RolePrivilegeUpsert, MethodType: Post, Layer: SecurityDAL, Parameters: privilegeList = " + JsonConvert.SerializeObject(privilegeList) + ",role = " + JsonConvert.SerializeObject(role));
            bool      checkRolePrivilege = false;
            DataSet   dataSet            = new DataSet();
            var       res       = new List <IntegerColumn>();
            DataTable dataTable = new DataTable();

            dataTable = EntityCollectionHelper.ConvertTo <IntegerColumn>(privilegeList);

            try
            {
                using (var command = new SqlCommand())
                {
                    command.Connection  = new SqlConnection(this.connectionString);
                    command.CommandText = "USP_RolePrivilegeUpsert";
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.Add(new SqlParameter()
                    {
                        ParameterName = "@RoleID", Value = role.RoleId
                    });
                    // command.Parameters.Add(new SqlParameter() { ParameterName = "@PrivilegeTable", Value = dataTable });
                    SqlParameter structuredParam = new SqlParameter("@PrivilegeTable", SqlDbType.Structured);
                    structuredParam.Value = dataTable;
                    command.Parameters.Add(structuredParam);
                    command.Parameters.Add(new SqlParameter()
                    {
                        ParameterName = "@UpdatedByUserID", Value = role.UpdateUserId
                    });

                    using (SqlDataAdapter adapter = new SqlDataAdapter(command))
                    {
                        adapter.Fill(dataSet);
                        if (dataSet != null)
                        {
                            checkRolePrivilege = true;
                        }
                        else
                        {
                            checkRolePrivilege = false;
                        }
                    }
                }
            }
            catch (SqlException sqlEx)
            {
                Logging.LogErrorMessage("Method: RolePrivilegeUpsert, Layer: SecurityDAL, Stack Trace: " + sqlEx.ToString());
                throw;
            }
            catch (Exception ex)
            {
                Logging.LogErrorMessage("Method: RolePrivilegeUpsert, Layer: SecurityDAL, Stack Trace: " + ex.ToString());
                throw;
            }

            return(checkRolePrivilege);
        }
コード例 #13
0
        private void CheckRecursive(TreeNodeAdv treeNode, bool isSave)
        {
            var nodeParent = treeNode.Parent;

            if (isSave)
            {
                if (!base.IsSelectedItem(this.gridList.SelectedIndex, this.Text))
                {
                    return;
                }

                var obj = _listOfRole[this.gridList.SelectedIndex];

                if (nodeParent.Tag != null)
                {
                    var rolePrivilege = new RolePrivilege
                    {
                        role_id  = obj.role_id,
                        menu_id  = nodeParent.Tag.ToString(),
                        grant_id = Convert.ToInt32(treeNode.Tag),
                        is_grant = treeNode.CheckState == CheckState.Checked
                    };

                    IRolePrivilegeBll rolePrivilegeBll = new RolePrivilegeBll(_log);
                    var result = rolePrivilegeBll.Save(rolePrivilege);
                }
            }
            else
            {
                treeNode.CheckState = CheckState.Unchecked;

                if (_listOfRolePrivilege != null)
                {
                    if (nodeParent.Tag != null)
                    {
                        if (treeNode.Tag != null)
                        {
                            var role = _listOfRole[this.gridList.SelectedIndex];

                            var rolePrivilege = _listOfRolePrivilege.Where(f => f.role_id == role.role_id && f.menu_id == nodeParent.Tag.ToString() &&
                                                                           f.grant_id == Convert.ToInt32(treeNode.Tag))
                                                .SingleOrDefault();
                            if (rolePrivilege != null)
                            {
                                treeNode.CheckState = rolePrivilege.is_grant ? CheckState.Checked : CheckState.Unchecked;
                            }
                        }
                    }
                }
            }

            // Print each node recursively.
            foreach (TreeNodeAdv tn in treeNode.Nodes)
            {
                CheckRecursive(tn, isSave);
            }
        }
コード例 #14
0
        public void Delete_RolePrivileges()
        {
            RolePrivilege rolePrivilege = ObjectFactory.CreateRolePrivilege();

            context.Set <RolePrivilege>().Add(rolePrivilege);
            context.SaveChanges();

            service.Delete(rolePrivilege.RoleId);

            Assert.Empty(context.Set <RolePrivilege>());
        }
コード例 #15
0
        public static void CreateRolePrivileges(IOrganizationService svc, Guid roleid, Guid privilegeid, int privilegeDepthMask)
        {
            var rolePrivilege = new RolePrivilege(privilegeDepthMask, privilegeid);

            RolePrivilege[]          rolePrivileges = { rolePrivilege };
            AddPrivilegesRoleRequest addPrivs       = new AddPrivilegesRoleRequest();

            addPrivs.Privileges = rolePrivileges;
            addPrivs.RoleId     = roleid;
            svc.Execute(addPrivs);
        }
コード例 #16
0
        public int Save(RolePrivilege obj)
        {
            var result = 0;

            using (IDapperContext context = new DapperContext())
            {
                _unitOfWork = new UnitOfWork(context, _log);
                result      = _unitOfWork.RolePrivilegeRepository.Save(obj);
            }

            return(result);
        }
コード例 #17
0
 public bool RolePrivilegeUpsert(PrivilegeObj privilegeObj)
 {
     Logging.LogDebugMessage("Method: RolePrivilegeUpsert, MethodType: Post, Layer: SecurityController, Parameters: privilegeObj = " + JsonConvert.SerializeObject(privilegeObj));
     using (SecurityBL rolePrivilegeUpsert = new SecurityBL())
     {
         RolePrivilege roleobj = new RolePrivilege();
         roleobj = privilegeObj.roleslist;
         List <IntegerColumn> privilegelist = new List <IntegerColumn>();
         privilegelist = privilegeObj.privilegelist;
         return(rolePrivilegeUpsert.RolePrivilegeUpsert(privilegelist, roleobj));
     }
 }
コード例 #18
0
 public ActionResult Edit([Bind(Include = "Id,RoleId,PrivilegeId")] RolePrivilege rolePrivilege)
 {
     if (ModelState.IsValid)
     {
         db.Entry(rolePrivilege).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.PrivilegeId = new SelectList(db.Privileges, "Id", "Name", rolePrivilege.PrivilegeId);
     ViewBag.RoleId      = new SelectList(db.Roles, "Id", "Name", rolePrivilege.RoleId);
     return(View(rolePrivilege));
 }
コード例 #19
0
        /// <summary>
        /// Add a existing <c>Privilege</c> to a <c>Role</c>.
        /// </summary>
        /// <param name="roleId">Role Id</param>
        /// <param name="privilegeId">
        /// <c>Privilege Id</c>.
        /// If you don't know <c>Privilege Id</c>, you can call <see cref="PrivilegeHelper.GetId(string)"/> method.
        /// </param>
        /// <param name="depth"><see cref="PrivilegeDepth"/></param>
        /// <returns>
        /// <see cref="AddPrivilegesRoleResponse"/>
        /// </returns>
        public AddPrivilegesRoleResponse AddPrivilege(Guid roleId, Guid privilegeId, PrivilegeDepth depth)
        {
            ExceptionThrow.IfGuidEmpty(roleId, "roleId");
            ExceptionThrow.IfGuidEmpty(privilegeId, "privilegeId");

            RolePrivilege privilege = new RolePrivilege()
            {
                Depth = depth, PrivilegeId = privilegeId
            };

            return(AddPrivilege(roleId, privilege));
        }
コード例 #20
0
        public ActionResult Create([Bind(Include = "RoleId,PrivilegeId")] RolePrivilege rolePrivilege)
        {
            if (ModelState.IsValid)
            {
                db.RolePrivileges.Add(rolePrivilege);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.PrivilegeId = new SelectList(db.Privileges, "Id", "Name", rolePrivilege.PrivilegeId);
            ViewBag.RoleId      = new SelectList(db.Roles, "Id", "Name", rolePrivilege.RoleId);
            return(View(rolePrivilege));
        }
コード例 #21
0
        /// <summary>
        /// Add a existing <c>Privilege</c> to a <c>Role</c>.
        /// <para>
        /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.addprivilegesrolerequest(v=crm.8).aspx
        /// </para>
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="privilege"></param>
        /// <returns><see cref="AddPrivilegesRoleResponse"/></returns>
        public AddPrivilegesRoleResponse AddPrivilege(Guid roleId, RolePrivilege privilege)
        {
            ExceptionThrow.IfGuidEmpty(roleId, "roleId");
            ExceptionThrow.IfNull(privilege, "privilege");

            AddPrivilegesRoleRequest request = new AddPrivilegesRoleRequest()
            {
                RoleId     = roleId,
                Privileges = new RolePrivilege[] { privilege }
            };

            return((AddPrivilegesRoleResponse)this.OrganizationService.Execute(request));
        }
コード例 #22
0
ファイル: VendorUserDA.cs プロジェクト: sanlonezhang/ql
        public RolePrivilege CreateRolePrivilege(RolePrivilege entity)
        {
            DataCommand dc = DataCommandManager.GetDataCommand("External_Insert_RolePrivilege");

            dc.SetParameterValue("@SysNo", entity.SysNo);
            dc.SetParameterValue("@RoleSysNo", entity.RoleSysNo);
            dc.SetParameterValue("@PrivilegeSysNo", entity.PrivilegeSysNo);

            dc.ExecuteNonQuery();

            entity.SysNo = Convert.ToInt32(dc.GetParameterValue("@SysNo"));
            return(entity);
        }
コード例 #23
0
        public JsonResult Update(UpdateRoleModel model, string pIds)
        {
            JsonResult json = new JsonResult();

            if (string.IsNullOrEmpty(model.roleName))
            {
                return(Json(new { success = false, msg = "角色名称不为空" }, "text/json"));
            }
            List <Role> mrRole = db.Role.Where(m => m.roleName == model.roleName).ToList();

            if (mrRole != null & mrRole.Count > 1)
            {
                return(Json(new { success = false, msg = "角色名称已经存在" }, "text/json"));
            }
            using (TransactionScope scope = new TransactionScope())
            {
                try
                {
                    Role role = db.Role.FirstOrDefault(m => m.roleName == model.roleName);
                    if (role != null)
                    {
                        role.roleName = model.roleName;
                        role.roleNote = model.roleNote;
                    }
                    db.Entry(role).State = EntityState.Modified;

                    RolePrivilege rolePrivilege =
                        db.RolePrivilege.Where(m => m.roleId == model.roleId).FirstOrDefault();
                    if (rolePrivilege != null)
                    {
                        rolePrivilege.privilegeIds = pIds;
                        rolePrivilege.roleId       = model.roleId;
                    }
                    db.Entry(rolePrivilege).State = EntityState.Modified;
                    if (db.SaveChanges() > 0)
                    {
                        json.Data = new { success = true, msg = "修改成功!" };
                    }
                    else
                    {
                        json.Data = new { success = false, msg = "修改失败!" };
                    }
                }
                catch (DbEntityValidationException ex)
                {
                    throw;
                }
                scope.Complete();
            }
            return(json);
        }
コード例 #24
0
        private RolePrivilege toRolePrivilege(Entity e)
        {
            var rp = new RolePrivilege()
            {
                CanBeGlobal    = e.GetAttributeValue <bool>("canbeglobal"),
                CanBeDeep      = e.GetAttributeValue <bool>("canbedeep"),
                CanBeLocal     = e.GetAttributeValue <bool>("canbelocal"),
                CanBeBasic     = e.GetAttributeValue <bool>("canbebasic"),
                AccessRight    = e.GetAttributeValue <AccessRights>("accessright"),
                PrivilegeDepth = PrivilegeDepthToEnum((int)e.GetAttributeValue <AliasedValue>(PRIVILEGE_ROLEPRIVILEGE_ALIAS + ".privilegedepthmask").Value)
            };

            return(rp);
        }
コード例 #25
0
        public bool Insert(RolePrivilege roleprivilege)
        {
            int autonumber = 0;
            RolePrivilegeDAC roleprivilegeComponent = new RolePrivilegeDAC();

            roleprivilege.HasAccess = true;
            bool endedSuccessfuly = roleprivilegeComponent.InsertNewRolePrivilege(ref autonumber, roleprivilege.RoleId, roleprivilege.ContentEntityId, roleprivilege.SystemFunctionId, roleprivilege.HasAccess, DateTime.Now);

            if (endedSuccessfuly)
            {
                roleprivilege.RolePrivilegeId = autonumber;
            }
            return(endedSuccessfuly);
        }
コード例 #26
0
        public void SaveUpdateTest()
        {
            var obj = new RolePrivilege
            {
                role_id  = "11dc1faf-2c66-4525-932d-a90e24da8987",
                menu_id  = "a138abfd-73da-438e-a0fe-aa3e6c6ddce9",
                grant_id = 0,
                is_grant = false
            };

            var result = _bll.Save(obj);

            Assert.IsTrue(result != 0);
        }
コード例 #27
0
 private void ExecuteGrant(List <String> roles, String grantee, Boolean isAdmin)
 {
     if (roles.Count > 0)
     {
         foreach (String role in roles)
         {
             RolePrivilegeBuilder builder       = new RolePrivilegeBuilder(role);
             RolePrivilege        rolePrivilege = builder
                                                  .Grantee(new GranteeClauseBuilder().Grantee(grantee))
                                                  .AdminOption(isAdmin).Build();
             this.privilegeBLL.GrantRolePrivilege(rolePrivilege);
         }
     }
 }
コード例 #28
0
        private RolePrivilege ToRolePrivilege(Entity e1, Entity e2)
        {
            var rp = new RolePrivilege()
            {
                CanBeGlobal    = e1.GetAttributeValue <bool>("canbeglobal"),
                CanBeDeep      = e1.GetAttributeValue <bool>("canbedeep"),
                CanBeLocal     = e1.GetAttributeValue <bool>("canbelocal"),
                CanBeBasic     = e1.GetAttributeValue <bool>("canbebasic"),
                AccessRight    = e1.GetAttributeValue <AccessRights>("accessright"),
                PrivilegeDepth = PrivilegeDepthToEnum((int)e2["privilegedepthmask"])
            };

            return(rp);
        }
コード例 #29
0
        // GET: RolePrivileges/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RolePrivilege rolePrivilege = db.RolePrivileges.Find(id);

            if (rolePrivilege == null)
            {
                return(HttpNotFound());
            }
            return(View(rolePrivilege));
        }
コード例 #30
0
        public void AddRolePrivilege(int roleId, int privilegeId)
        {
            RolePrivilege entity = new RolePrivilege
            {
                PrivilegeId = privilegeId,
                RoleId      = roleId
            };

            using (var reps = PrivilegeContextProvider.GetRepository())
            {
                reps.Use <RolePrivilege>().Add(entity);
                reps.SaveChanges();
            }
        }
コード例 #31
0
        public List<RolePrivilege> ActionsToRolePrivilegeList()
        {
            var list = new List<RolePrivilege>();

            foreach (PrivilegeAction pAction in Actions)
            {
                var rp = new RolePrivilege { PrivilegeId = pAction.PrivilegeId };

                switch (pAction.Level)
                {
                    case PrivilegeLevel.User:
                        {
                            rp.Depth = PrivilegeDepth.Local;
                        }
                        break;

                    case PrivilegeLevel.BusinessUnit:
                        {
                            rp.Depth = PrivilegeDepth.Basic;
                        }
                        break;

                    case PrivilegeLevel.ParentChildBusinessUnit:
                        {
                            rp.Depth = PrivilegeDepth.Deep;
                        }
                        break;

                    case PrivilegeLevel.Organization:
                        {
                            rp.Depth = PrivilegeDepth.Global;
                        }
                        break;
                }

                list.Add(rp);
            }

            return list;
        }
コード例 #32
0
ファイル: SyncIssues.cs プロジェクト: barrett2474/CMS2
        public void AssignRolePrivileges()
        {
            mForm.AddMessage(MessageType.Info, "-------------------- Assigning Role Privileges --------------------");
            List<Role> roles = (from x in mCee.Roles select x).ToList();
            List<Privilege> privileges = (from x in mCee.Privileges select x).ToList();
            List<SecurityObject> securityObjects = (from x in mCee.SecurityObjects select x).ToList();

            foreach (var role in roles)
            {
                foreach (var privilege in privileges)
                {
                    foreach (var securityObject in securityObjects)
                    {
                        var rolePrivilegeExist = (from x in mCee.RolePrivileges
                                                  where x.RoleId == role.Id
                                                  && x.PrivilegeId == privilege.Id
                                                  && x.SecObjectId == securityObject.Id
                                                  select x).FirstOrDefault();

                        if (rolePrivilegeExist == null)
                        {
                            RolePrivilege rolePrivilege = new RolePrivilege();
                            rolePrivilege.RoleId = role.Id;
                            rolePrivilege.PrivilegeId = privilege.Id;
                            rolePrivilege.SecObjectId = securityObject.Id;
                            mCee.RolePrivileges.AddObject(rolePrivilege);
                        }
                    }

                }

                mCee.SaveChanges();
            }
        }
コード例 #33
0
        /// <summary>
        /// This method first connects to the Organization service. Afterwards, an 
        /// authorization profile is created, and associated to a team. Then an entity
        /// is created and permissions for the entity are assigned to the profile. These
        /// permissions are then retrieved.
        /// </summary>
        /// <param name="serverConfig">Contains server connection information.</param>
        /// <param name="promptforDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        public void Run(ServerConnection.Configuration serverConfig, bool promptforDelete)
        {
            try
            {
                //<snippetRetrieveSecuredFieldsForAUser1>
                // Connect to the Organization service. 
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    CreateRequiredRecords();

                    // Create Field Security Profile.
                    FieldSecurityProfile managersProfile = new FieldSecurityProfile();
                    managersProfile.Name = "Managers";
                    _profileId = _serviceProxy.Create(managersProfile);
                    Console.Write("Created Profile, ");

                    // Add team to profile.
                    AssociateRequest teamToProfile = new AssociateRequest()
                    {
                        Target = new EntityReference(FieldSecurityProfile.EntityLogicalName,
                            _profileId),
                        RelatedEntities = new EntityReferenceCollection()
                        {
                            new EntityReference(Team.EntityLogicalName, _teamId)
                        },
                        Relationship = new Relationship("teamprofiles_association")
                    };
                    _serviceProxy.Execute(teamToProfile);

                    // Add user to the profile.
                    AssociateRequest userToProfile = new AssociateRequest()
                    {
                        Target = new EntityReference(FieldSecurityProfile.EntityLogicalName,
                            _profileId),
                        RelatedEntities = new EntityReferenceCollection()
                        {
                            new EntityReference(SystemUser.EntityLogicalName, _userId)
                        },
                        Relationship = new Relationship("systemuserprofiles_association")
                    };
                    _serviceProxy.Execute(userToProfile);

                    // Create custom activity entity.
                    CreateEntityRequest req = new CreateEntityRequest()
                    {
                        Entity = new EntityMetadata
                        {
                            LogicalName = "new_tweet",
                            DisplayName = new Label("Tweet", 1033),
                            DisplayCollectionName = new Label("Tweet", 1033),
                            OwnershipType = OwnershipTypes.UserOwned,
                            SchemaName = "New_Tweet",
                            IsActivity = true,
                            IsAvailableOffline = true,
                            IsAuditEnabled = new BooleanManagedProperty(true),
                            IsMailMergeEnabled = new BooleanManagedProperty(false),
                        },
                        HasActivities = false,
                        HasNotes = true,
                        PrimaryAttribute = new StringAttributeMetadata()
                        {
                            SchemaName = "Subject",
                            LogicalName = "subject",
                            RequiredLevel = new AttributeRequiredLevelManagedProperty(
                                AttributeRequiredLevel.None),
                            MaxLength = 100,
                            DisplayName = new Label("Subject", 1033)
                        }
                    };
                    _serviceProxy.Execute(req);
                    Console.Write("Entity Created, ");

                    // Add privileges for the Tweet entity to the Marketing Role.
                    RolePrivilege[] privileges = new RolePrivilege[3];

                    // SDK: prvCreateActivity
                    privileges[0] = new RolePrivilege();
                    privileges[0].PrivilegeId = new Guid("{091DF793-FE5E-44D4-B4CA-7E3F580C4664}");
                    privileges[0].Depth = PrivilegeDepth.Global;

                    // SDK: prvReadActivity
                    privileges[1] = new RolePrivilege();
                    privileges[1].PrivilegeId = new Guid("{650C14FE-3521-45FE-A000-84138688E45D}");
                    privileges[1].Depth = PrivilegeDepth.Global;

                    // SDK: prvWriteActivity
                    privileges[2] = new RolePrivilege();
                    privileges[2].PrivilegeId = new Guid("{0DC8F72C-57D5-4B4D-8892-FE6AAC0E4B81}");
                    privileges[2].Depth = PrivilegeDepth.Global;

                    // Create and execute the request.
                    AddPrivilegesRoleRequest request = new AddPrivilegesRoleRequest()
                    {
                        RoleId = _roleId,
                        Privileges = privileges
                    };
                    AddPrivilegesRoleResponse response =
                        (AddPrivilegesRoleResponse)_serviceProxy.Execute(request);

                    // Create custom identity attribute.
                    CreateAttributeRequest attrReq = new CreateAttributeRequest()
                    {
                        Attribute = new StringAttributeMetadata()
                        {
                            LogicalName = "new_identity",
                            DisplayName = new Label("Identity", 1033),
                            SchemaName = "New_Identity",
                            MaxLength = 500,
                            RequiredLevel = new AttributeRequiredLevelManagedProperty(
                                AttributeRequiredLevel.Recommended),
                            IsSecured = true
                        },
                        EntityName = "new_tweet"
                    };
                    CreateAttributeResponse identityAttributeResponse =
                        (CreateAttributeResponse)_serviceProxy.Execute(attrReq);
                    _identityId = identityAttributeResponse.AttributeId;
                    Console.Write("Identity Created, ");

                    // Create custom message attribute.
                    attrReq = new CreateAttributeRequest()
                    {
                        Attribute = new StringAttributeMetadata()
                        {
                            LogicalName = "new_message",
                            DisplayName = new Label("Message", 1033),
                            SchemaName = "New_Message",
                            MaxLength = 140,
                            RequiredLevel = new AttributeRequiredLevelManagedProperty(
                                AttributeRequiredLevel.Recommended),
                            IsSecured = true
                        },
                        EntityName = "new_tweet"
                    };
                    CreateAttributeResponse messageAttributeResponse =
                        (CreateAttributeResponse)_serviceProxy.Execute(attrReq);
                    _messageId = messageAttributeResponse.AttributeId;
                    Console.Write("Message Created, ");

                    // Create field permission object for Identity.
                    FieldPermission identityPermission = new FieldPermission();
                    identityPermission.AttributeLogicalName = "new_identity";
                    identityPermission.EntityName = "new_tweet";
                    identityPermission.CanRead = new OptionSetValue(FieldPermissionType.Allowed);
                    identityPermission.FieldSecurityProfileId = new EntityReference(
                        FieldSecurityProfile.EntityLogicalName, _profileId);
                    _identityPermissionId = _serviceProxy.Create(identityPermission);
                    Console.Write("Permission Created, ");

                    // Create list for storing retrieved profiles.
                    List<Guid> profileIds = new List<Guid>();

                    // Build query to obtain the field security profiles.
                    QueryExpression qe = new QueryExpression()
                    {
                        EntityName = FieldSecurityProfile.EntityLogicalName,
                        ColumnSet = new ColumnSet("fieldsecurityprofileid"),
                        LinkEntities =
                        {
                            new LinkEntity
                            {
                                LinkFromEntityName = FieldSecurityProfile.EntityLogicalName,
                                LinkToEntityName = SystemUser.EntityLogicalName,
                                LinkCriteria = 
                                {
                                    Conditions = 
                                    {
                                        new ConditionExpression("systemuserid", ConditionOperator.Equal, _userId)
                                    }
                                }
                            }
                        }
                    };

                    // Execute the query and obtain the results.
                    RetrieveMultipleRequest rmRequest = new RetrieveMultipleRequest()
                    {
                        Query = qe
                    };

                    EntityCollection bec = ((RetrieveMultipleResponse)_serviceProxy.Execute(
                        rmRequest)).EntityCollection;

                    // Extract profiles from query result.
                    foreach (FieldSecurityProfile profileEnt in bec.Entities)
                    {
                        profileIds.Add(profileEnt.FieldSecurityProfileId.Value);
                    }
                    Console.Write("Profiles Retrieved, ");

                    // Retrieve attribute permissions of a FieldSecurityProfile.
                    DataCollection<Entity> dc;

                    // Retrieve the attributes.
                    QueryByAttribute qba = new QueryByAttribute(FieldPermission.EntityLogicalName);
                    qba.AddAttributeValue("fieldsecurityprofileid", _profileId);
                    qba.ColumnSet = new ColumnSet("attributelogicalname");

                    dc = _serviceProxy.RetrieveMultiple(qba).Entities;
                    Console.Write("Attributes Retrieved. ");

                    DeleteRequiredRecords(promptforDelete);
                }
                //</snippetRetrieveSecuredFieldsForAUser1>
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>)
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
コード例 #34
0
        /// <summary>
        /// This method creates any entity records that this sample requires.
        /// Creates a team and a role.
        /// </summary>
        public void CreateRequiredRecords()
        {

            // Retrieve the default business unit needed to create the team and role.
            QueryExpression query = new QueryExpression
            {
                EntityName = BusinessUnit.EntityLogicalName,
                ColumnSet = new ColumnSet("businessunitid"),
                Criteria =
                {
                    Conditions =
                    {
                        new ConditionExpression("parentbusinessunitid", 
                            ConditionOperator.Null)
                    }
                }
            };

            BusinessUnit defaultBusinessUnit = _service.RetrieveMultiple(query)
                .Entities.Cast<BusinessUnit>().FirstOrDefault();

            // Instantiate a team entity record and set its property values.
            // See the Entity Metadata topic in the SDK documentation  
            // to determine which attributes must be set for each entity.
            Team setupTeam = new Team
            {
                Name = "An Example Team",
                BusinessUnitId = new EntityReference(BusinessUnit.EntityLogicalName,
                    defaultBusinessUnit.Id)
            };

            // Create a team record.
            _teamId = _service.Create(setupTeam);
            Console.WriteLine("Created team '{0}'", setupTeam.Name);

            // Instantiate a role entity record and set its property values.
            // See the Entity Metadata topic in the SDK documentation  
            // to determine which attributes must be set for each entity.
            Role setupRole = new Role
            {
                Name = _roleName,
                BusinessUnitId = new EntityReference(BusinessUnit.EntityLogicalName,
                    defaultBusinessUnit.Id)
            };

            // Create the role record. 
            _roleId = _service.Create(setupRole);
            Console.WriteLine("Created role '{0}'", setupRole.Name);

            // Define an array listing the privileges that we want to add to the role
            String[] privilegesToAdd = new string[] { "prvReadContact", 
                "prvCreateContact", "prvReadAccount", "prvCreateAccount" };

            // Query for the privileges we want to add to the role
            QueryExpression queryPrivileges = new QueryExpression
            {
                EntityName = Privilege.EntityLogicalName,
                ColumnSet = new ColumnSet("privilegeid", "name"),
                Criteria = new FilterExpression()
            };
            queryPrivileges.Criteria.AddCondition("name", ConditionOperator.In,
                privilegesToAdd);

            DataCollection<Entity> returnedPrivileges = _service.RetrieveMultiple(
                queryPrivileges).Entities;
            Console.WriteLine("Retrieved privileges to add to role");

            // Define a list to hold the RolePrivileges we'll need to add
            List<RolePrivilege> rolePrivileges = new List<RolePrivilege>();

            foreach (Privilege privilege in returnedPrivileges)
            {
                RolePrivilege rolePrivilege = new RolePrivilege(
                    (int)PrivilegeDepth.Local, privilege.PrivilegeId.Value);
                rolePrivileges.Add(rolePrivilege);
            }

            // Add the retrieved privileges to the example role.
            AddPrivilegesRoleRequest addPrivilegesRequest = new AddPrivilegesRoleRequest
            {
                RoleId = _roleId,
                Privileges = rolePrivileges.ToArray()
            };
            _service.Execute(addPrivilegesRequest);
            Console.WriteLine("Added privileges to role");
        }
コード例 #35
0
        /// <summary>
        /// This method creates any entity records that this sample requires.
        /// Create a queue record.
        /// Create a team record.
        /// Create a role and add queue privileges.
        /// Assign role to team.
        /// </summary>
        public void CreateRequiredRecords()
        {
            var QueueViewType = new
            {
                Public = 0,
                Private = 1
            };
            // Create a queue instance and set its property values.
            Queue newQueue = new Queue
            {
                Name = "Example Queue",
                Description = "This is an example queue.",
                QueueViewType = new OptionSetValue(QueueViewType.Private)
            };

            // Create a new queue and store its returned GUID in a variable for later use.
            _queueId = _serviceProxy.Create(newQueue);
            Console.WriteLine("Created {0}", newQueue.Name);

            // Retrieve the default business unit for the creation of the team and role.
            QueryExpression queryDefaultBusinessUnit = new QueryExpression
            {
                EntityName = BusinessUnit.EntityLogicalName,
                ColumnSet = new ColumnSet("businessunitid"),
                Criteria = new FilterExpression
                {
                    Conditions = 
                        {
                            new ConditionExpression 
                            { 
                                AttributeName = "parentbusinessunitid", 
                                Operator = ConditionOperator.Null 
                            }
                        }
                }
            };

            BusinessUnit defaultBusinessUnit =
                (BusinessUnit)_serviceProxy.RetrieveMultiple(
                queryDefaultBusinessUnit).Entities[0];

            // Create a new example team.
            Team setupTeam = new Team
            {
                Name = "Example Team",
                BusinessUnitId = new EntityReference(BusinessUnit.EntityLogicalName,
                    defaultBusinessUnit.BusinessUnitId.Value)
            };

            _teamId = _serviceProxy.Create(setupTeam);
            Console.WriteLine("Created {0}", setupTeam.Name);

            // Create a new example role.
            Role setupRole = new Role
            {
                Name = "Example Role",
                BusinessUnitId = new EntityReference(BusinessUnit.EntityLogicalName,
                    defaultBusinessUnit.BusinessUnitId.Value)
            };

            _roleId = _serviceProxy.Create(setupRole);
            Console.WriteLine("Created {0}", setupRole.Name);

            // Retrieve the prvReadQueue and prvAppendToQueue privileges.
            QueryExpression queryQueuePrivileges = new QueryExpression
            {
                EntityName = Privilege.EntityLogicalName,
                ColumnSet = new ColumnSet("privilegeid", "name"),
                Criteria = new FilterExpression
                {
                    Conditions = 
                        {
                            new ConditionExpression
                            { 
                                AttributeName = "name", 
                                Operator = ConditionOperator.In,
                                Values = { "prvReadQueue", "prvAppendToQueue" }
                            }
                        }
                }
            };

            DataCollection<Entity> retrievedQueuePrivileges =
                _serviceProxy.RetrieveMultiple(queryQueuePrivileges).Entities;

            Console.WriteLine("Retrieved prvReadQueue and prvAppendToQueue privileges.");

            // Define a list to hold the RolePrivileges we'll need to add
            List<RolePrivilege> rolePrivileges = new List<RolePrivilege>();

            foreach (Privilege privilege in retrievedQueuePrivileges)
            {
                RolePrivilege rolePrivilege = new RolePrivilege(
                    (int)PrivilegeDepth.Local, privilege.PrivilegeId.Value);
                rolePrivileges.Add(rolePrivilege);
            }

            // Add the prvReadQueue and prvAppendToQueue privileges to the example role.
            AddPrivilegesRoleRequest addPrivilegesRequest = new AddPrivilegesRoleRequest
            {
                RoleId = _roleId,
                Privileges = rolePrivileges.ToArray()
            };
            _serviceProxy.Execute(addPrivilegesRequest);
            Console.WriteLine("Retrieved privileges are added to {0}.", setupRole.Name);


            // Add the example role to the example team.
            _serviceProxy.Associate(
                       Team.EntityLogicalName,
                       _teamId,
                       new Relationship("teamroles_association"),
                       new EntityReferenceCollection() { new EntityReference(Role.EntityLogicalName, _roleId) });

            // It takes some time for the privileges to propogate to the team.  
            // Verify this is complete before continuing.

            bool teamLacksPrivilege = true;
            while (teamLacksPrivilege)
            {
                RetrieveTeamPrivilegesRequest retrieveTeamPrivilegesRequest =
                    new RetrieveTeamPrivilegesRequest
                {
                    TeamId = _teamId
                };

                RetrieveTeamPrivilegesResponse retrieveTeamPrivilegesResponse =
                    (RetrieveTeamPrivilegesResponse)_serviceProxy.Execute(
                    retrieveTeamPrivilegesRequest);

                if (retrieveTeamPrivilegesResponse.RolePrivileges.Any(
                    rp => rp.PrivilegeId == rolePrivileges[0].PrivilegeId) &&
                    retrieveTeamPrivilegesResponse.RolePrivileges.Any(
                    rp => rp.PrivilegeId == rolePrivileges[1].PrivilegeId))
                {
                    teamLacksPrivilege = false;
                }
                else
                {
                    Thread.Sleep(1000);
                }
            }

            Console.WriteLine("{0} has been added to {1}",
               setupRole.Name, setupTeam.Name);
            return;
        }
コード例 #36
0
ファイル: RoleManager.cs プロジェクト: rehanhsyed/XrmToolBox
        public void AddPrivilegeToRole(List<RolePrivilege> privileges, PrivilegeAction pAction)
        {
            var itemToUpdate = privileges.FirstOrDefault(rp => rp.PrivilegeId == pAction.PrivilegeId);

            if (itemToUpdate != null)
            {
                itemToUpdate.Depth = GetDepthFromLevel(pAction.Level);
            }
            else
            {
                itemToUpdate = new RolePrivilege
                                   {
                                       PrivilegeId = pAction.PrivilegeId,
                                       Depth = GetDepthFromLevel(pAction.Level)
                                   };

                privileges.Add(itemToUpdate);
            }
        }
コード例 #37
0
 public RolePrivilegeViewModel(RolePrivilege rolePrivilege)
 {
     mRolePrivilege = rolePrivilege;
 }
コード例 #38
0
ファイル: RoleControl.xaml.cs プロジェクト: barrett2474/CMS2
        private void RenderPrivileges(SecurityObject secObject, RadTabItem tabItem)
        {
            int rowHeight = 20;
            int rowIndex = 0;
            tabItem.Style = (Style)Application.Current.Resources["InnerTabItem"];

            ScrollViewer sv = new ScrollViewer();
            sv.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
            sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
            //sv.Margin = new Thickness(3);
            sv.Background = (SolidColorBrush)Application.Current.Resources["PanelDarkBackground"];
            sv.BorderBrush = (SolidColorBrush)Application.Current.Resources["PanelDarkBackground"];

            Grid grid = new Grid();

            grid.Background = (SolidColorBrush)Application.Current.Resources["PanelDarkBackground"];
            sv.Content = grid;

            tabItem.Content = sv;
            foreach (var privilege in mPrivileges)
            {

                grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(rowHeight) });
                CheckBox checkBox = new CheckBox();
                grid.Children.Add(checkBox);

                checkBox.Content = privilege.Name;
                Grid.SetRow(checkBox, rowIndex);
                Grid.SetColumn(checkBox, 0);
                rowIndex++;

                RolePrivilegeViewModel rolePrivilegeViewModel;

                //Check set privileges
                var rolePrivilege = mRole.RolePrivileges.FirstOrDefault(x => x.SecObjectId == secObject.Id && x.PrivilegeId == privilege.Id);

                if (rolePrivilege != null)
                {
                    rolePrivilegeViewModel = new RolePrivilegeViewModel(rolePrivilege);
                    rolePrivilegeViewModel.HasAccess = true;
                }
                else
                {
                    rolePrivilege = new RolePrivilege();
                    rolePrivilege.RoleId = mRoleId;
                    rolePrivilege.SecObjectId = secObject.Id;
                    rolePrivilege.PrivilegeId = privilege.Id;

                    rolePrivilegeViewModel = new RolePrivilegeViewModel(rolePrivilege);
                    rolePrivilegeViewModel.HasAccess = false;
                }

                mRolePrivilegesViewModel.Add(rolePrivilegeViewModel);

                //Bind
                System.Windows.Data.Binding checkBoxBinding = new System.Windows.Data.Binding("HasAccess");
                checkBoxBinding.Mode = System.Windows.Data.BindingMode.TwoWay;
                checkBoxBinding.Source = rolePrivilegeViewModel;
                checkBox.SetBinding(CheckBox.IsCheckedProperty, checkBoxBinding);
            }
        }