mirror of https://github.com/veops/cmdb.git
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
# -*- coding:utf-8 -*-
|
|
|
|
from flask import request
|
|
from flask import session
|
|
from flask_login import current_user
|
|
|
|
from api.lib.decorator import args_required
|
|
from api.lib.perm.acl.acl import ACLManager
|
|
from api.lib.perm.acl.acl import validate_permission
|
|
from api.resource import APIView
|
|
|
|
|
|
class HasPermissionView(APIView):
|
|
url_prefix = "/validate"
|
|
|
|
@args_required("resource")
|
|
@args_required("resource_type")
|
|
@args_required("perm")
|
|
def get(self):
|
|
resource = request.values.get("resource")
|
|
resource_type = request.values.get("resource_type")
|
|
perm = request.values.get("perm")
|
|
validate_permission(resource, resource_type, perm)
|
|
return self.jsonify(is_valid=True)
|
|
|
|
def post(self):
|
|
self.get()
|
|
|
|
|
|
class GetResourcesView(APIView):
|
|
url_prefix = "/resources"
|
|
|
|
@args_required("resource_type")
|
|
def get(self):
|
|
resource_type = request.values.get("resource_type")
|
|
res = ACLManager().get_resources(resource_type)
|
|
return self.jsonify(res)
|
|
|
|
|
|
class GetUserInfoView(APIView):
|
|
url_prefix = "/user/info"
|
|
|
|
def get(self):
|
|
name = session.get("acl", {}).get("nickName") or session.get("CAS_USERNAME") or current_user.nickname
|
|
role = dict(permissions=session.get("acl", {}).get("parentRoles", []) or ["admin"])
|
|
avatar = session.get("acl", {}).get("avatar") or current_user.avatar
|
|
return self.jsonify(result=dict(name=name,
|
|
role=role,
|
|
avatar=avatar))
|