From 2e7a2e0e42b78b6f7a5084b0dd26091aea3412e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1rbara=20de=20Castro=20Fernandes?= Date: Mon, 18 May 2020 20:48:33 -0300 Subject: [PATCH] Add link to AdminFE for staff members --- app/gabsocial/components/sidebar_menu.js | 14 +++++++++++++- .../features/compose/components/action_bar.js | 13 ++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/gabsocial/components/sidebar_menu.js b/app/gabsocial/components/sidebar_menu.js index e1ed5d57d..1e2c1bcb5 100644 --- a/app/gabsocial/components/sidebar_menu.js +++ b/app/gabsocial/components/sidebar_menu.js @@ -12,6 +12,7 @@ import Icon from './icon'; import DisplayName from './display_name'; import { closeSidebar } from '../actions/sidebar'; import { shortNumberFormat } from '../utils/numbers'; +import { isStaff } from '../utils/accounts'; import { makeGetAccount } from '../selectors'; import { logOut } from 'gabsocial/actions/auth'; @@ -26,6 +27,7 @@ const messages = defineMessages({ domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' }, mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, filters: { id: 'navigation_bar.filters', defaultMessage: 'Muted words' }, + admin_settings: { id: 'navigation_bar.admin_settings', defaultMessage: 'Admin settings' }, logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' }, lists: { id: 'column.lists', defaultMessage: 'Lists' }, apps: { id: 'tabs_bar.apps', defaultMessage: 'Apps' }, @@ -41,6 +43,7 @@ const mapStateToProps = state => { account: getAccount(state, me), sidebarOpen: state.get('sidebar').sidebarOpen, hasPatron: state.getIn(['soapbox', 'extensions', 'patron']), + isStaff: isStaff(state.getIn(['accounts', me])), }; }; @@ -63,10 +66,15 @@ class SidebarMenu extends ImmutablePureComponent { account: ImmutablePropTypes.map, sidebarOpen: PropTypes.bool, onClose: PropTypes.func.isRequired, + isStaff: PropTypes.bool.isRequired, }; + static defaultProps = { + isStaff: false, + } + render() { - const { sidebarOpen, onClose, intl, account, onClickLogOut, hasPatron } = this.props; + const { sidebarOpen, onClose, intl, account, onClickLogOut, hasPatron, isStaff } = this.props; if (!account) return null; const acct = account.get('acct'); @@ -151,6 +159,10 @@ class SidebarMenu extends ImmutablePureComponent { {intl.formatMessage(messages.filters)} */} + { isStaff && + + {intl.formatMessage(messages.admin_settings)} + } {intl.formatMessage(messages.preferences)} diff --git a/app/gabsocial/features/compose/components/action_bar.js b/app/gabsocial/features/compose/components/action_bar.js index 49eb5f56a..236c0dca9 100644 --- a/app/gabsocial/features/compose/components/action_bar.js +++ b/app/gabsocial/features/compose/components/action_bar.js @@ -3,6 +3,7 @@ import { connect } from 'react-redux'; import { openModal } from '../../../actions/modal'; import PropTypes from 'prop-types'; import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; +import { isStaff } from 'gabsocial/utils/accounts'; import { defineMessages, injectIntl } from 'react-intl'; import { logOut } from 'gabsocial/actions/auth'; @@ -16,6 +17,7 @@ const messages = defineMessages({ domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' }, mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, filters: { id: 'navigation_bar.filters', defaultMessage: 'Muted words' }, + admin_settings: { id: 'navigation_bar.admin_settings', defaultMessage: 'Admin settings' }, logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' }, keyboard_shortcuts: { id: 'navigation_bar.keyboard_shortcuts', defaultMessage: 'Hotkeys' }, }); @@ -24,6 +26,7 @@ const mapStateToProps = state => { const me = state.get('me'); return { meUsername: state.getIn(['accounts', me, 'username']), + isStaff: isStaff(state.getIn(['accounts', me])), }; }; @@ -45,14 +48,19 @@ class ActionBar extends React.PureComponent { onOpenHotkeys: PropTypes.func.isRequired, onClickLogOut: PropTypes.func.isRequired, meUsername: PropTypes.string, + isStaff: PropTypes.bool.isRequired, }; + static defaultProps = { + isStaff: false, + } + handleHotkeyClick = () => { this.props.onOpenHotkeys(); } render() { - const { intl, onClickLogOut, meUsername } = this.props; + const { intl, onClickLogOut, meUsername, isStaff } = this.props; const size = this.props.size || 16; let menu = []; @@ -68,6 +76,9 @@ class ActionBar extends React.PureComponent { // menu.push({ text: intl.formatMessage(messages.filters), to: '/filters' }); menu.push(null); menu.push({ text: intl.formatMessage(messages.keyboard_shortcuts), action: this.handleHotkeyClick }); + if (isStaff) { + menu.push({ text: intl.formatMessage(messages.admin_settings), href: '/pleroma/admin/' }); + } menu.push({ text: intl.formatMessage(messages.preferences), to: '/settings/preferences' }); menu.push({ text: intl.formatMessage(messages.logout), to: '/auth/sign_out', action: onClickLogOut });