diff --git a/frontend/src/components/common/account.js b/frontend/src/components/common/account.js index 065bf1ee63..cf90c67752 100644 --- a/frontend/src/components/common/account.js +++ b/frontend/src/components/common/account.js @@ -77,6 +77,7 @@ class Account extends Component { quotaUsage: Utils.bytesToSize(resp.data.usage), quotaTotal: Utils.bytesToSize(resp.data.total), isStaff: resp.data.is_staff, + isInstAdmin: resp.data.is_inst_admin, isOrgStaff: resp.data.is_org_staff === 1 ? true : false, showInfo: !this.state.showInfo, }); @@ -91,29 +92,47 @@ class Account extends Component { } renderMenu = () => { - if (this.state.isStaff && this.props.isAdminPanel) { - return ( - {gettext('Exit Admin Panel')} - ); + let data; + const { isStaff, isOrgStaff, isInstAdmin } = this.state; + + if (this.props.isAdminPanel) { + if (isStaff) { + data = { + url: siteRoot, + text: gettext('Exit System Admin') + }; + } else if (isOrgStaff) { + data = { + url: siteRoot, + text: gettext('Exit Organization Admin') + }; + } else if (isInstAdmin) { + data = { + url: siteRoot, + text: gettext('Exit Institution Admin') + }; + } + + } else { + if (isStaff) { + data = { + url: `${siteRoot}sys/useradmin/`, + text: gettext('System Admin') + }; + } else if (isOrgStaff) { + data = { + url: `${siteRoot}org/useradmin/`, + text: gettext('Organization Admin') + }; + } else if (isInstAdmin) { + data = { + url: `${siteRoot}inst/useradmin/`, + text: gettext('Institution Admin') + }; + } } - if (this.state.isOrgStaff && this.props.isAdminPanel) { - return ( - {gettext('Exit Organization Admin')} - ); - } - - if (this.state.isStaff) { - return ( - {gettext('System Admin')} - ); - } - - if (this.state.isOrgStaff) { - return ( - {gettext('Organization Admin')} - ); - } + return data && {data.text}; } renderAvatar = () => { diff --git a/seahub/api2/views.py b/seahub/api2/views.py index 7d5ab86e79..2ec69fcbea 100644 --- a/seahub/api2/views.py +++ b/seahub/api2/views.py @@ -329,6 +329,9 @@ class AccountInfo(APIView): info['institution'] = p.institution if p and p.institution else "" info['is_staff'] = request.user.is_staff + if getattr(settings, 'MULTI_INSTITUTION', False): + info['is_inst_admin'] = request.user.inst_admin + interval = UserOptions.objects.get_file_updates_email_interval(email) info['email_notification_interval'] = 0 if interval is None else interval return info diff --git a/seahub/institutions/middleware.py b/seahub/institutions/middleware.py index 6a609e6f46..b00c76c71a 100644 --- a/seahub/institutions/middleware.py +++ b/seahub/institutions/middleware.py @@ -16,6 +16,7 @@ class InstitutionMiddleware(object): try: inst_admin = InstitutionAdmin.objects.get(user=username) except InstitutionAdmin.DoesNotExist: + request.user.inst_admin = False return None request.user.institution = inst_admin.institution