import logging import jwt import time from rest_framework.response import Response from django.utils.translation import gettext as _ from rest_framework.permissions import IsAdminUser from pingcap_sso.api.base import AdminEndpoint from pingcap_sso.api.permissions import MethodPermission from pingcap_sso.models import SiteSetting logger = logging.getLogger(__name__) class OverviewEndpoint(AdminEndpoint): permission_classes = (IsAdminUser, MethodPermission) perms_map = { 'GET': ['pingcap_sso.view_metabase'], } def get(self, request, *args, **kwargs): """audit_log: 查看了用户数据概览""" payload = { "resource": {"dashboard": 1}, "params": {}, "exp": round(time.time()) + (60 * 2) # 2 minute expiration } token = jwt.encode(payload, SiteSetting.metabase_secret_key, algorithm="HS256") iframeUrl = '{}/embed/dashboard/{}#bordered=false&titled=true'.format( SiteSetting.metabase_site_url, token) return Response({ 'detail': _('success'), 'data': { 'dashboard_url': iframeUrl } })