diff --git a/app/soapbox/components/sidebar_menu.js b/app/soapbox/components/sidebar_menu.js index 5cda6e1b6..93bb30489 100644 --- a/app/soapbox/components/sidebar_menu.js +++ b/app/soapbox/components/sidebar_menu.js @@ -12,7 +12,7 @@ import IconButton from './icon_button'; import Icon from './icon'; import DisplayName from './display_name'; import { closeSidebar } from '../actions/sidebar'; -import { isStaff, isAdmin } from '../utils/accounts'; +import { isAdmin } from '../utils/accounts'; import { makeGetAccount, makeGetOtherAccounts } from '../selectors'; import { logOut, switchAccount } from 'soapbox/actions/auth'; import ThemeToggle from '../features/ui/components/theme_toggle_container'; @@ -239,7 +239,7 @@ class SidebarMenu extends ImmutablePureComponent { {intl.formatMessage(messages.filters)} - {isStaff(account) && + {isAdmin(account) && {intl.formatMessage(messages.admin_settings)} } diff --git a/app/soapbox/components/status_action_bar.js b/app/soapbox/components/status_action_bar.js index 6b4d6ba55..47fe89956 100644 --- a/app/soapbox/components/status_action_bar.js +++ b/app/soapbox/components/status_action_bar.js @@ -7,7 +7,7 @@ import IconButton from './icon_button'; import DropdownMenuContainer from '../containers/dropdown_menu_container'; import { defineMessages, injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import { isStaff } from 'soapbox/utils/accounts'; +import { isStaff, isAdmin } from 'soapbox/utils/accounts'; import { openModal } from '../actions/modal'; import { Link } from 'react-router-dom'; import EmojiSelector from 'soapbox/components/emoji_selector'; @@ -89,6 +89,7 @@ class StatusActionBar extends ImmutablePureComponent { intl: PropTypes.object.isRequired, me: SoapboxPropTypes.me, isStaff: PropTypes.bool.isRequired, + isAdmin: PropTypes.bool.isRequired, allowedEmoji: ImmutablePropTypes.list, }; @@ -274,7 +275,7 @@ class StatusActionBar extends ImmutablePureComponent { } _makeMenu = (publicStatus) => { - const { status, intl, withDismiss, withGroupAdmin, me, isStaff } = this.props; + const { status, intl, withDismiss, withGroupAdmin, me, isStaff, isAdmin } = this.props; const mutingConversation = status.get('muted'); let menu = []; @@ -320,8 +321,10 @@ class StatusActionBar extends ImmutablePureComponent { if (isStaff) { menu.push(null); - menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/pleroma/admin/#/users/${status.getIn(['account', 'id'])}/` }); - // menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); + if (isAdmin) { + menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/pleroma/admin/#/users/${status.getIn(['account', 'id'])}/` }); + menu.push({ text: intl.formatMessage(messages.admin_status), href: `/pleroma/admin/#/statuses/${status.get('id')}/` }); + } menu.push({ text: intl.formatMessage(messages.deactivateUser, { name: status.getIn(['account', 'username']) }), action: this.handleDeactivateUser }); menu.push({ text: intl.formatMessage(messages.deleteUser, { name: status.getIn(['account', 'username']) }), action: this.handleDeleteUser }); menu.push({ text: intl.formatMessage(status.get('sensitive') === false ? messages.markStatusSensitive : messages.markStatusNotSensitive), action: this.handleToggleStatusSensitivity }); @@ -438,9 +441,12 @@ class StatusActionBar extends ImmutablePureComponent { const mapStateToProps = state => { const me = state.get('me'); + const account = state.getIn(['accounts', me]); + return { me, - isStaff: isStaff(state.getIn(['accounts', me])), + isStaff: account ? isStaff(account) : false, + isAdmin: account ? isAdmin(account) : false, }; }; diff --git a/app/soapbox/features/status/components/action_bar.js b/app/soapbox/features/status/components/action_bar.js index 0642e1f06..bac2b19c4 100644 --- a/app/soapbox/features/status/components/action_bar.js +++ b/app/soapbox/features/status/components/action_bar.js @@ -7,7 +7,7 @@ import IconButton from '../../../components/icon_button'; import ImmutablePropTypes from 'react-immutable-proptypes'; import DropdownMenuContainer from '../../../containers/dropdown_menu_container'; import { defineMessages, injectIntl } from 'react-intl'; -import { isStaff } from 'soapbox/utils/accounts'; +import { isStaff, isAdmin } from 'soapbox/utils/accounts'; import { isUserTouching } from 'soapbox/is_mobile'; import EmojiSelector from 'soapbox/components/emoji_selector'; import { getReactForStatus } from 'soapbox/utils/emoji_reacts'; @@ -52,9 +52,12 @@ const messages = defineMessages({ const mapStateToProps = state => { const me = state.get('me'); + const account = state.getIn(['accounts', me]); + return { me, - isStaff: isStaff(state.getIn(['accounts', me])), + isStaff: account ? isStaff(account) : false, + isAdmin: account ? isAdmin(account) : false, }; }; @@ -94,6 +97,7 @@ class ActionBar extends React.PureComponent { onOpenUnauthorizedModal: PropTypes.func.isRequired, me: SoapboxPropTypes.me, isStaff: PropTypes.bool.isRequired, + isAdmin: PropTypes.bool.isRequired, allowedEmoji: ImmutablePropTypes.list, }; @@ -263,7 +267,7 @@ class ActionBar extends React.PureComponent { } render() { - const { status, intl, me, isStaff, allowedEmoji } = this.props; + const { status, intl, me, isStaff, isAdmin, allowedEmoji } = this.props; const { emojiSelectorVisible } = this.state; const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); @@ -312,8 +316,10 @@ class ActionBar extends React.PureComponent { menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport }); if (isStaff) { menu.push(null); - menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/pleroma/admin/#/users/${status.getIn(['account', 'id'])}/` }); - // menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` }); + if (isAdmin) { + menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/pleroma/admin/#/users/${status.getIn(['account', 'id'])}/` }); + menu.push({ text: intl.formatMessage(messages.admin_status), href: `/pleroma/admin/#/statuses/${status.get('id')}/` }); + } menu.push({ text: intl.formatMessage(messages.deactivateUser, { name: status.getIn(['account', 'username']) }), action: this.handleDeactivateUser }); menu.push({ text: intl.formatMessage(messages.deleteUser, { name: status.getIn(['account', 'username']) }), action: this.handleDeleteUser }); menu.push({ text: intl.formatMessage(status.get('sensitive') === false ? messages.markStatusSensitive : messages.markStatusNotSensitive), action: this.handleToggleStatusSensitivity }); diff --git a/app/soapbox/features/ui/components/link_footer.js b/app/soapbox/features/ui/components/link_footer.js index 4b3a35fed..424f00356 100644 --- a/app/soapbox/features/ui/components/link_footer.js +++ b/app/soapbox/features/ui/components/link_footer.js @@ -6,7 +6,7 @@ import { Link } from 'react-router-dom'; import { connect } from 'react-redux'; import { openModal } from '../../../actions/modal'; import { logOut } from 'soapbox/actions/auth'; -import { isStaff, isAdmin } from 'soapbox/utils/accounts'; +import { isAdmin } from 'soapbox/utils/accounts'; import sourceCode from 'soapbox/utils/code'; const mapStateToProps = state => { @@ -35,7 +35,7 @@ const LinkFooter = ({ onOpenHotkeys, account, onClickLogOut }) => (
  • - {isStaff(account) &&
  • } + {isAdmin(account) &&
  • } {isAdmin(account) &&
  • }