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/UrlHandlers/ApiHandler.cs

    r404 r418  
    33using System.Net;
    44using System.Reflection;
    5 using Webserver.Permissions;
    65using Webserver.WebAPI;
    76
     
    4746                private void addApi (AbsWebAPI _api) {
    4847                        apis.Add (_api.Name, _api);
    49                         AdminWebModules.Instance.AddKnownModule ($"webapi.{_api.Name}", _api.DefaultPermissionLevel ());
    5048                }
    5149
     
    7169                        }
    7270
    73                         if (!IsAuthorizedForApi (apiName, _context.PermissionLevel)) {
     71                        _context.RequestPath = subPath;
     72
     73                        if (!api.Authorized (_context)) {
    7474                                _context.Response.StatusCode = (int) HttpStatusCode.Forbidden;
    7575                                if (_context.Connection != null) {
     
    7979                                return;
    8080                        }
    81 
    82                         _context.RequestPath = subPath;
    8381
    8482                        try {
     
    9290                        }
    9391                }
    94 
    95                 private bool IsAuthorizedForApi (string _apiName, int _permissionLevel) {
    96                         return AdminWebModules.Instance.ModuleAllowedWithLevel ($"webapi.{_apiName}", _permissionLevel);
    97                 }
    9892        }
    9993}
Note: See TracChangeset for help on using the changeset viewer.