0

CompanyUser と Product クラス
があります。各ユーザーは x 個の製品を作成できます。各ユーザーがお互いの製品を表示できるようにしたいだけで、自分の製品を編集できるようにしたい.

CompanyUsers に割り当てる Product クラスに対するタイプのアクセス許可を持つ ProductPeople という名前のロールを作成しました (ロールにはすべてのアクセス許可、読み取り、書き込み、ナビゲートなどがあります)。
userX だけが自分の製品を編集/削除できる基準をどこに設定しますか?

4

2 に答える 2

2

アップデータークラスのコードは次のとおりです。ベース アセンブリ内のすべてのオブジェクトに対するアクセス許可が作成されます。これを機能させるには、制限された baseobject クラスが必要です。これには、TeamMember (SecuritySystemUser の子孫) である CreatedBy と、プロパティを具体的に制限するかどうかを示す Restricted の 2 つのプロパティを定義する必要があります。制限をオンにすると、オブジェクトを作成したユーザー以外はオブジェクトを非表示にする必要があります。

注: これはアセンブリのみを扱います。BaseImp と Base を含むすべての参照アセンブリに別のループを追加できます。例として、KPI アセンブリに対してこれを行います。

     private void CreateTeamRole()
    {
        SecuritySystemRole Role = ObjectSpace.FindObject<SecuritySystemRole>(new BinaryOperator("Name", "Team"));
        if (Role != null)
            return;
        Role = ObjectSpace.CreateObject<SecuritySystemRole>();
        Role.Name = "Team";
        Role.CanEditModel = true;
        Role.SetTypePermissions<SecuritySystemUser>(SecurityOperations.Read, SecuritySystemModifier.Allow);
        Role.SetTypePermissions<SecuritySystemRole>(SecurityOperations.Read, SecuritySystemModifier.Allow);
        Role.SetTypePermissions<TeamMember>(SecurityOperations.ReadWriteAccess, SecuritySystemModifier.Allow);
        Role.SetTypePermissions<TeamMember>(SecurityOperations.Navigate, SecuritySystemModifier.Allow);
        foreach (var item in System.Reflection.Assembly.GetAssembly(typeof(DevExpress.ExpressApp.Kpi.KpiDefinition)).GetTypes())
            if (item.IsSubclassOf(typeof(XPBaseObject)))
                Role.SetTypePermissions(item, SecurityOperations.FullAccess, SecuritySystemModifier.Allow);
        Role.SetTypePermissions<XPWeakReference>(SecurityOperations.FullAccess, SecuritySystemModifier.Allow);
        foreach (var item in System.Reflection.Assembly.GetAssembly(typeof(BaseObject)).GetTypes())
        {
            if (item.IsSubclassOf(typeof(XPBaseObject)) && !item.Equals(typeof(TeamMember)))
            {
                if (item.IsSubclassOf(typeof(RestrictedBaseObject)))
                {
                    Role.SetTypePermissions(item, "Create;Navigate;Delete", SecuritySystemModifier.Allow);
                    Role.AddObjectAccessPermission(item, "!Restricted or [CreatedBy.Oid] = CurrentUserId()", SecurityOperations.ReadWriteAccess);
                }
                else
                    Role.SetTypePermissions(item, SecurityOperations.FullAccess, SecuritySystemModifier.Allow);
            }
        }
    }
于 2014-01-08T14:13:17.983 に答える
0

私があなたの質問を理解している限り、あなたは typepermissions のみを使用しています。必要なものを表現できるようにするには、オブジェクト権限を使用する必要があります。SecuritySystemObjectPermissionsObject タイプのオブジェクトの場合、「自社製品」に関する制限を表す基準を指定できます。

于 2013-05-21T13:30:09.577 に答える