Ignore:
Timestamp:
Apr 24, 2023, 2:40:34 PM (19 months ago)
Author:
alloc
Message:

*Updated web permissions system
*Fixed webpermissions command
*Moved API "webmods" to "mods", also lists non-webmod mods

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements2/WebServer/src/UrlHandlers/UserStatusHandler.cs

    r404 r426  
    1616                private static readonly byte[] jsonAllowedKey = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("allowed");
    1717
     18                private static readonly byte[][] jsonMethodNameKeys;
     19
     20                static UserStatusHandler () {
     21                        jsonMethodNameKeys = new byte[(int)ERequestMethod.Count][];
     22                        for (int i = 0; i < jsonMethodNameKeys.Length; i++) {
     23                                ERequestMethod method = (ERequestMethod)i;
     24                                jsonMethodNameKeys [i] = JsonWriter.GetEncodedPropertyName (method.ToStringCached ());
     25                        }
     26                }
     27
    1828                public override void HandleRequest (RequestContext _context) {
    1929                        WebUtils.PrepareEnvelopedResult (out JsonWriter writer);
     
    3242
    3343                        List<AdminWebModules.WebModule> list = AdminWebModules.Instance.GetModules ();
    34                         for (int i = 0; i < list.Count; i++) {
    35                                 AdminWebModules.WebModule perm = list [i];
     44                        for (int iModule = 0; iModule < list.Count; iModule++) {
     45                                AdminWebModules.WebModule perm = list [iModule];
    3646                               
    37                                 if (i > 0) {
     47                                if (iModule > 0) {
    3848                                        writer.WriteValueSeparator ();
    3949                                }
     
    4353
    4454                                writer.WriteRaw (jsonAllowedKey);
    45                                 writer.WriteBoolean (perm.PermissionLevel >= _context.PermissionLevel);
     55                               
     56                                writer.WriteBeginObject ();
     57
     58                                if (perm.LevelPerMethod == null) {
     59                                        writer.WriteRaw (jsonMethodNameKeys [(int)ERequestMethod.GET]);
     60                                        writer.WriteBoolean (perm.LevelGlobal >= _context.PermissionLevel);
     61                                } else {
     62                                        bool first = true;
     63                                        for (int iMethod = 0; iMethod < perm.LevelPerMethod.Length; iMethod++) {
     64                                                int methodLevel = perm.LevelPerMethod [iMethod];
     65                                               
     66                                                if (methodLevel == AdminWebModules.MethodLevelNotSupported) {
     67                                                        continue;
     68                                                }
     69
     70                                                if (methodLevel == AdminWebModules.MethodLevelInheritGlobal) {
     71                                                        methodLevel = perm.LevelGlobal;
     72                                                }
     73
     74                                                if (!first) {
     75                                                        writer.WriteValueSeparator ();
     76                                                }
     77
     78                                                first = false;
     79                                               
     80                                                writer.WriteRaw (jsonMethodNameKeys [iMethod]);
     81                                                writer.WriteBoolean (methodLevel >= _context.PermissionLevel);
     82                                        }
     83                                }
     84
     85                                writer.WriteEndObject ();
     86                               
    4687
    4788                                writer.WriteEndObject ();
Note: See TracChangeset for help on using the changeset viewer.