|
|
|
|
@ -1,12 +1,18 @@
|
|
|
|
|
from flask_restful import marshal_with # type: ignore
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
from flask import request
|
|
|
|
|
from flask_login import current_user
|
|
|
|
|
from flask_restful import Resource, marshal_with, reqparse # type: ignore
|
|
|
|
|
|
|
|
|
|
from controllers.common import fields
|
|
|
|
|
from controllers.common import helpers as controller_helpers
|
|
|
|
|
from controllers.web import api
|
|
|
|
|
from controllers.web.error import AppUnavailableError
|
|
|
|
|
from controllers.web.wraps import WebApiResource
|
|
|
|
|
from libs.passport import PassportService
|
|
|
|
|
from models.model import App, AppMode
|
|
|
|
|
from services.app_service import AppService
|
|
|
|
|
from services.enterprise.enterprise_service import EnterpriseService
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AppParameterApi(WebApiResource):
|
|
|
|
|
@ -42,5 +48,55 @@ class AppMeta(WebApiResource):
|
|
|
|
|
return AppService().get_app_meta(app_model)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AppAccessMode(Resource):
|
|
|
|
|
def get(self):
|
|
|
|
|
parser = reqparse.RequestParser()
|
|
|
|
|
parser.add_argument("appId", type=str, required=True, location="args")
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
|
|
app_id = args["appId"]
|
|
|
|
|
res = EnterpriseService.WebAppAuth.get_app_access_mode_by_id(app_id)
|
|
|
|
|
|
|
|
|
|
return {"accessMode": res.access_mode}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AppWebAuthPermission(Resource):
|
|
|
|
|
def get(self):
|
|
|
|
|
user_id = "visitor"
|
|
|
|
|
try:
|
|
|
|
|
auth_header = request.headers.get("Authorization")
|
|
|
|
|
if auth_header is None:
|
|
|
|
|
raise
|
|
|
|
|
if " " not in auth_header:
|
|
|
|
|
raise
|
|
|
|
|
|
|
|
|
|
auth_scheme, tk = auth_header.split(None, 1)
|
|
|
|
|
auth_scheme = auth_scheme.lower()
|
|
|
|
|
if auth_scheme != "bearer":
|
|
|
|
|
raise
|
|
|
|
|
|
|
|
|
|
decoded = PassportService().verify(tk)
|
|
|
|
|
user_id = decoded.get("user_id", "visitor")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
parser = reqparse.RequestParser()
|
|
|
|
|
parser.add_argument("appId", type=str, required=True, location="args")
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
|
|
app_id = args["appId"]
|
|
|
|
|
user_id = current_user.id
|
|
|
|
|
logging.info(f"App ID: {app_id}, User ID: {user_id}")
|
|
|
|
|
|
|
|
|
|
app_code = AppService.get_app_code_by_id(app_id)
|
|
|
|
|
logging.info(f"App code: {app_code}")
|
|
|
|
|
|
|
|
|
|
res = EnterpriseService.WebAppAuth.is_user_allowed_to_access_webapp(str(user_id), app_code)
|
|
|
|
|
return {"result": res}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
api.add_resource(AppParameterApi, "/parameters")
|
|
|
|
|
api.add_resource(AppMeta, "/meta")
|
|
|
|
|
# webapp auth apis
|
|
|
|
|
api.add_resource(AppAccessMode, "/webapp/access-mode")
|
|
|
|
|
api.add_resource(AppWebAuthPermission, "/webapp/permission")
|
|
|
|
|
|