public List<CMetaobjectSecurityRecord> GetSecurityRecords(DataContext Context) { this._securityRecords = CMetaobjectSecurityRecord.sGetRecordsByUser(this._key, Context); var Links = cMenu.Metaobjects.Linq.CMetaobjectLink.sGetInternalLinksByClass(this._key, EnMetaobjectClass.ESystemUserGroup, Context); foreach (cMenu.Metaobjects.Linq.CMetaobjectLink Link in Links) { CSystemUserGroup Group = new CSystemUserGroup(Context); Group.Key = Link.SourceObjectKey; Group.GetSecurityRecords(Context); foreach (CMetaobjectSecurityRecord Record in Group.SecurityRecords) { if (this._securityRecords.Where(R => R.MetaobjectKey == Record.MetaobjectKey).ToList().Count == 0) this._securityRecords.Add(Record); } } return this._securityRecords; }
public static int CreateGroupsUsers() { CSystemUserGroup AdminGroup = new CSystemUserGroup(DatabaseContext) { FullDescription = "Группа администраторов", ShortDescription = "Группа администраторов", Name = "Администраторы", ID = Guid.Parse(CEmbeddedSecurityConsts.CONST_USER_GROUP_ADMINISTRATORS_ID), Key = CEmbeddedSecurityConsts.CONST_USER_GROUP_ADMINISTRATORS_KEY, ModificatonDate = DateTime.Now, Parent = CEmbeddedObjectsConsts.CONST_FOLDER_USERS_KEY, Status = EnMetaobjectStatus.EEnabled, System = true }; var R = AdminGroup.ObjectInsert(DatabaseContext); if (R != CErrors.ERR_SUC) return R; CSystemUserGroup ModeratorsGroup = new CSystemUserGroup(DatabaseContext) { FullDescription = "Группа модераторов", ShortDescription = "Группа модераторов", Name = "Модераторы", ID = Guid.Parse(CEmbeddedSecurityConsts.CONST_USER_GROUP_MODERATORS_ID), Key = CEmbeddedSecurityConsts.CONST_USER_GROUP_MODERATORS_KEY, ModificatonDate = DateTime.Now, Parent = CEmbeddedObjectsConsts.CONST_FOLDER_USERS_KEY, Status = EnMetaobjectStatus.EEnabled, System = true }; R = AdminGroup.ObjectInsert(DatabaseContext); if (R != CErrors.ERR_SUC) return R; CSystemUserGroup UsersGroup = new CSystemUserGroup(DatabaseContext) { FullDescription = "Группа пользователей", ShortDescription = "Группа пользователей", Name = "Пользователи", ID = Guid.Parse(CEmbeddedSecurityConsts.CONST_USER_GROUP_USERS_ID), Key = CEmbeddedSecurityConsts.CONST_USER_GROUP_USERS_KEY, ModificatonDate = DateTime.Now, Parent = CEmbeddedObjectsConsts.CONST_FOLDER_USERS_KEY, Status = EnMetaobjectStatus.EEnabled, System = true }; R = AdminGroup.ObjectInsert(DatabaseContext); if (R != CErrors.ERR_SUC) return R; CSystemUser AdminUser = new CSystemUser(DatabaseContext) { ID = Guid.Parse(CEmbeddedSecurityConsts.CONST_USER_ADMINISTRATOR_ID), Key = CEmbeddedSecurityConsts.CONST_USER_ADMINISTRATOR_KEY, ShortDescription = "Главный администратор системы", Email = "*****@*****.**", EnterpriseType = -1, FirstName = "Administrator", SecondName = "", Surname = "", Login = "******", Name = "Администратор", MobilePhone = "89028087122", HomePhone = "", WorkPhone = "", Passhash = CSecurityHelper.sGeneratePasshash("Administrator", "q"), ModificatonDate = DateTime.Now, Parent = CEmbeddedSecurityConsts.CONST_USER_GROUP_ADMINISTRATORS_KEY, Status = EnMetaobjectStatus.EEnabled, System = true }; R = AdminUser.ObjectInsert(DatabaseContext); if (R != CErrors.ERR_SUC) return R; cMenu.Metaobjects.Linq.CMetaobjectLink Link = new Metaobjects.Linq.CMetaobjectLink() { LinkedObjectKey = AdminUser.Key, LinkType = EnMetaobjectLinkType.ESecurity, LinkValue = 1, SourceObjectKey = AdminGroup.Key }; R = Link.LinkInsert(DatabaseContext); if (R != CErrors.ERR_SUC) return R; try { DatabaseContext.SubmitChanges(); } catch (Exception Exception) { throw new Exception(Exception.Message); return CErrors.ERR_DB_INSERT_OBJECT; } return CErrors.ERR_SUC; }
public List<CSystemPolicy> GetPolicies(DataContext Context) { this._policies.Clear(); var Links = cMenu.Metaobjects.Linq.CMetaobjectLink.sGetInternalLinksByClass(this._key, EnMetaobjectClass.ESystemPolicy, Context); foreach (cMenu.Metaobjects.Linq.CMetaobjectLink Link in Links) { CSystemPolicy Policy = new CSystemPolicy(Link.LinkedObjectKey, Context); this._policies.Add(Policy); } Links = cMenu.Metaobjects.Linq.CMetaobjectLink.sGetExternalLinksByClass(this._key, EnMetaobjectClass.ESystemUserGroup, Context); foreach (cMenu.Metaobjects.Linq.CMetaobjectLink Link in Links) { CSystemUserGroup Group = new CSystemUserGroup(Context); Group.Key = Link.SourceObjectKey; Group.GetPolicies(Context); foreach (CSystemPolicy Policy in Group.Policies) { if (this._policies.Where(P => P.ID.ToString() == Policy.ID.ToString()).ToList().Count == 0) this._policies.Add(Policy); } } return this._policies; }