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) && }