This commit is contained in:
yumoqing 2023-04-04 10:34:02 +08:00
parent 906be8d0be
commit e542cd9dc7
4 changed files with 32 additions and 3 deletions

View File

@ -87,9 +87,8 @@ class AuthAPI(AppLogger):
# print('-----------auth.get_auth() return None--------------')
user = await self.checkLogin(request)
#raise web.HTTPFound(f'/login_form?from_path={path}')
user_perms = await self.getUserPermissions(user)
need_perm = await self.getPermissionNeed(path)
if need_perm in user_perms:
is_ok = await self.checkUserPermission(user, path)
if is_ok:
return await handler(request)
# print(f'**{path} forbidden**')
raise web.HTTPForbidden()

View File

@ -12,3 +12,16 @@ def Success(data):
"status":"OK",
"data":data
}
def NeedLogin(path):
return {
"status":"need_login",
"data":path
}
def NoPermission(path):
return {
"status":"no_permission",
"data":path
}

View File

@ -19,6 +19,7 @@ from appPublic.folderUtils import folderInfo
from appPublic.uniqueID import setNode,getID
from appPublic.unicoding import unicoding,uDict,uObject
from appPublic.Singleton import SingletonDecorator
from appPublic.rc4 import password
from sqlor.dbpools import DBPools,runSQL,runSQLPaging
from sqlor.crud import CRUD
@ -26,6 +27,7 @@ from sqlor.crud import CRUD
from .xlsxData import XLSXData
from .uriop import URIOp
from .error import Success, Error, NeedLogin, NoPermission
from .serverenv import ServerEnv
@ -160,3 +162,9 @@ def initEnv():
g.openfile = openfile
g.CRUD = CRUD
g.DBPools = DBPools
g.Error = Error
g.Success = Success
g.NeedLogin = NeedLogin
g.NoPermission = NoPermission
g.password = password

View File

@ -8,6 +8,7 @@ import asyncio
from yarl import URL
from aiohttp_auth import auth
from appPublic.http_client import Http_Client
from functools import partial
from aiohttp_auth import auth
@ -199,7 +200,15 @@ class ProcessorResource(AppLogger, StaticResource,Url2File):
ns = multiDict2Dict(request.query)
return ns
async def remember_user(userid):
await auth.remember(request, userid)
async def get_user():
return await auth.get_auth(request)
self.y_env.i18n = serveri18n
self.y_env.remember_user = remember_user
self.y_env.get_user = get_user
self.y_env.i18nDict = i18nDICT
self.y_env.terminalType = getClientType(request)
self.y_env.entire_url = partial(self.entireUrl,request)