Exemple #1
0
        protected override ScriptUserDefinition GetData()
        {
            var result = new ScriptUserDefinition();

            if (!(UserAccessor.User?.GetUserDefinition(UserRetriever) is UserDefinition user))
            {
                result.Permissions = new Dictionary <string, bool>();
                return(result);
            }

            result.Username    = user.Username;
            result.DisplayName = user.DisplayName;
            result.IsAdmin     = user.Username == "admin";

            result.Permissions = Cache.GetLocalStoreOnly("ScriptUserPermissions:" + user.Id, TimeSpan.Zero,
                                                         UserPermissionRow.Fields.GenerationKey, () =>
            {
                var permissions = new Dictionary <string, bool>(StringComparer.OrdinalIgnoreCase);

                var permissionsUsedFromScript = Cache.GetLocalStoreOnly("PermissionsUsedFromScript",
                                                                        TimeSpan.Zero, RoleRow.Fields.GenerationKey, () =>
                {
                    return(UserPermissionRepository.ListPermissionKeys(Cache.Memory, TypeSource)
                           .Where(permissionKey =>
                    {
                        // this sends permission information for all permission keys to client side.
                        // if you don't need all of them to be available from script, filter them here.
                        // this is recommended for security / performance reasons...
                        return true;
                    }).ToArray());
                });

                foreach (var permissionKey in permissionsUsedFromScript)
                {
                    if (Permissions.HasPermission(permissionKey))
                    {
                        permissions[permissionKey] = true;
                    }
                }

                return(permissions);
            });

            return(result);
        }
Exemple #2
0
 protected override IEnumerable <string> GetData()
 {
     return(UserPermissionRepository.ListPermissionKeys(cache, typeSource));
 }