Esempio n. 1
0
        public Role ForApp(string app, bool isFrontend = false)
        {
            Guard.NotNullOrEmpty(app, nameof(app));

            var result = new HashSet <Permission>();

            if (Permissions.Any())
            {
                var prefix = P.ForApp(P.App, app).Id;

                foreach (var permission in Permissions)
                {
                    result.Add(new Permission(string.Concat(prefix, ".", permission.Id)));
                }
            }

            if (isFrontend)
            {
                foreach (var extraPermissionId in ExtraPermissions)
                {
                    var extraPermission = P.ForApp(extraPermissionId, app);

                    result.Add(extraPermission);
                }
            }

            return(new Role(Name, new PermissionSet(result), Properties));
        }
Esempio n. 2
0
        public static AppDto FromApp(IAppEntity app, string userId, bool isFrontend, IAppPlansProvider plans, Resources resources)
        {
            var permissions = GetPermissions(app, userId, isFrontend);

            var result = SimpleMapper.Map(app, new AppDto());

            result.Permissions = permissions.ToIds();

            result.SetPlan(app, plans, resources, permissions);
            result.SetImage(app, resources);

            if (app.Contributors.TryGetValue(userId, out var roleName) && app.Roles.TryGet(app.Name, roleName, isFrontend, out var role))
            {
                result.RoleProperties = role.Properties;
            }
            else
            {
                result.RoleProperties = JsonValue.Object();
            }

            if (resources.Includes(P.ForApp(P.AppContents, app.Name), permissions))
            {
                result.CanAccessContent = true;
            }

            return(result.CreateLinks(resources, permissions));
        }
Esempio n. 3
0
 public static Role CreateReader(string app)
 {
     return(new Role(Reader,
                     P.ForApp(P.AppAssetsRead, app),
                     P.ForApp(P.AppCommon, app),
                     P.ForApp(P.AppContentsRead, app)));
 }
Esempio n. 4
0
 public static Role CreateEditor(string app)
 {
     return(new Role(Editor,
                     P.ForApp(P.AppAssets, app),
                     P.ForApp(P.AppCommon, app),
                     P.ForApp(P.AppContents, app)));
 }
Esempio n. 5
0
        public static AppDto FromApp(IAppEntity app, string userId, bool isFrontend, IAppPlansProvider plans, Resources resources)
        {
            var result = SimpleMapper.Map(app, new AppDto
            {
                PlanName = plans.GetPlanForApp(app).Plan.Name
            });

            var permissions = PermissionSet.Empty;

            var isContributor = false;

            if (app.Contributors.TryGetValue(userId, out var roleName) && app.Roles.TryGet(app.Name, roleName, isFrontend, out var role))
            {
                isContributor = true;

                result.RoleProperties = role.Properties;
                result.Permissions    = permissions.ToIds();

                permissions = role.Permissions;
            }

            if (resources.Includes(P.ForApp(P.AppContents, app.Name), permissions))
            {
                result.CanAccessContent = true;
            }

            if (resources.IsAllowed(P.AppPlansChange, app.Name, additional: permissions))
            {
                result.PlanUpgrade = plans.GetPlanUpgradeForApp(app)?.Name;
            }

            return(result.CreateLinks(app, resources, permissions, isContributor));
        }
Esempio n. 6
0
 public static Role CreateDeveloper(string app)
 {
     return(new Role(Developer,
                     P.ForApp(P.AppApi, app),
                     P.ForApp(P.AppAssets, app),
                     P.ForApp(P.AppCommon, app),
                     P.ForApp(P.AppContents, app),
                     P.ForApp(P.AppPatterns, app),
                     P.ForApp(P.AppRules, app),
                     P.ForApp(P.AppSchemas, app)));
 }
Esempio n. 7
0
        public Role ForApp(string app)
        {
            var result = new HashSet <Permission>
            {
                P.ForApp(P.AppCommon, app)
            };

            if (Permissions.Any())
            {
                var prefix = P.ForApp(P.App, app).Id;

                foreach (var permission in Permissions)
                {
                    result.Add(new Permission(string.Concat(prefix, ".", permission.Id)));
                }
            }

            return(new Role(Name, new PermissionSet(result)));
        }
Esempio n. 8
0
        public static bool HasPermission(this ApiController controller, string id, string app = Permission.Any, string schema = Permission.Any, PermissionSet?additional = null)
        {
            if (app == Permission.Any)
            {
                if (controller.RouteData.Values.TryGetValue("app", out var value) && value is string s)
                {
                    app = s;
                }
            }

            if (schema == Permission.Any)
            {
                if (controller.RouteData.Values.TryGetValue("name", out var value) && value is string s)
                {
                    schema = s;
                }
            }

            var permission = AllPermissions.ForApp(id, app, schema);

            return(controller.HasPermission(permission, additional));
        }
Esempio n. 9
0
        public static AppDto FromApp(IAppEntity app, string userId, IAppPlansProvider plans, Resources resources)
        {
            var permissions = GetPermissions(app, userId);

            var result = SimpleMapper.Map(app, new AppDto());

            result.Permissions = permissions.ToIds();

            if (resources.Includes(P.ForApp(P.AppApi, app.Name), permissions))
            {
                result.CanAccessApi = true;
            }

            if (resources.Includes(P.ForApp(P.AppContents, app.Name), permissions))
            {
                result.CanAccessContent = true;
            }

            result.SetPlan(app, plans, resources, permissions);
            result.SetImage(app, resources);

            return(result.CreateLinks(resources, permissions));
        }
Esempio n. 10
0
 public static Role CreateOwner(string app)
 {
     return(new Role(Owner,
                     P.ForApp(P.App, app)));
 }