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)); }
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)); }
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))); }
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))); }
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)); }
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))); }
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))); }
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)); }
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)); }
public static Role CreateOwner(string app) { return(new Role(Owner, P.ForApp(P.App, app))); }