Ignore:
Timestamp:
Feb 27, 2023, 9:40:12 PM (21 months ago)
Author:
alloc
Message:

Refactored API authorization to support per-HTTP-method permission levels

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements2/WebServer/src/Permissions/AdminWebModules.cs

    r404 r418  
    4141
    4242                public void AddModule (string _module, int _permissionLevel) {
    43                         WebModule p = new WebModule (_module, _permissionLevel);
     43                        WebModule p = new WebModule (_module, _permissionLevel, false);
    4444                        lock (this) {
    4545                                allModulesList.Clear ();
     
    8484                        public readonly string Name;
    8585                        public readonly int PermissionLevel;
     86                        public readonly bool IsDefault;
    8687
    87                         public WebModule (string _name, int _permissionLevel) {
     88                        public WebModule (string _name, int _permissionLevel, bool _isDefault) {
    8889                                Name = _name;
    8990                                PermissionLevel = _permissionLevel;
     91                                IsDefault = _isDefault;
    9092                        }
    9193                       
     
    116118                                }
    117119                               
    118                                 _result = new WebModule (name, permissionLevel);
     120                                _result = new WebModule (name, permissionLevel, false);
    119121                                return true;
    120122                        }
     
    139141                        }
    140142
    141                         WebModule p = new WebModule (_module, _defaultPermission);
     143                        WebModule p = new WebModule (_module, _defaultPermission, true);
    142144
    143145                        lock (this) {
     
    158160
    159161                public bool ModuleAllowedWithLevel (string _module, int _level) {
    160                         WebModule permInfo = GetModule (_module);
     162                        WebModule permInfo = GetModule (_module)!.Value;
    161163                        return permInfo.PermissionLevel >= _level;
    162164                }
    163165
    164                 public WebModule GetModule (string _module) {
     166                public WebModule? GetModule (string _module, bool _returnDefaults = true) {
    165167                        if (modules.TryGetValue (_module, out WebModule result)) {
    166168                                return result;
     169                        }
     170
     171                        if (!_returnDefaults) {
     172                                return null;
    167173                        }
    168174
     
    170176                }
    171177
    172                 private readonly WebModule defaultModulePermission = new WebModule ("", 0);
     178                private readonly WebModule defaultModulePermission = new WebModule ("", 0, true);
    173179               
    174180#endregion
Note: See TracChangeset for help on using the changeset viewer.