MM-16239 disable fields according to SAML or LDAP (#2878)

* MM-16239 disable fields according to SAML or LDAP

* fix typo
This commit is contained in:
Elias Nahum 2019-06-17 15:27:35 -04:00 committed by GitHub
parent 6546dfdfd2
commit f6e42da251
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 29 deletions

View file

@ -88,9 +88,12 @@ export default class EditProfile extends PureComponent {
removeProfileImage: PropTypes.func.isRequired,
updateUser: PropTypes.func.isRequired,
}).isRequired,
config: PropTypes.object.isRequired,
currentUser: PropTypes.object.isRequired,
firstNameDisabled: PropTypes.bool.isRequired,
lastNameDisabled: PropTypes.bool.isRequired,
navigator: PropTypes.object.isRequired,
nicknameDisabled: PropTypes.bool.isRequired,
positionDisabled: PropTypes.bool.isRequired,
theme: PropTypes.object.isRequired,
commandType: PropTypes.string.isRequired,
};
@ -316,16 +319,12 @@ export default class EditProfile extends PureComponent {
renderFirstNameSettings = () => {
const {formatMessage} = this.context.intl;
const {config, currentUser, theme} = this.props;
const {firstNameDisabled, theme} = this.props;
const {firstName} = this.state;
const {auth_service: service} = currentUser;
const disabled = (service === 'ldap' && config.LdapFristNameAttributeSet === 'true') ||
(service === 'saml' && config.SamlFirstNameAttributeSet === 'true');
return (
<TextSetting
disabled={disabled}
disabled={firstNameDisabled}
id='firstName'
label={holders.firstName}
disabledText={formatMessage({
@ -341,17 +340,13 @@ export default class EditProfile extends PureComponent {
renderLastNameSettings = () => {
const {formatMessage} = this.context.intl;
const {config, currentUser, theme} = this.props;
const {lastNameDisabled, theme} = this.props;
const {lastName} = this.state;
const {auth_service: service} = currentUser;
const disabled = (service === 'ldap' && config.LdapLastNameAttributeSet === 'true') ||
(service === 'saml' && config.SamlLastNameAttributeSet === 'true');
return (
<View>
<TextSetting
disabled={disabled}
disabled={lastNameDisabled}
id='lastName'
label={holders.lastName}
disabledText={formatMessage({
@ -453,16 +448,12 @@ export default class EditProfile extends PureComponent {
renderNicknameSettings = () => {
const {formatMessage} = this.context.intl;
const {config, currentUser, theme} = this.props;
const {nicknameDisabled, theme} = this.props;
const {nickname} = this.state;
const {auth_service: service} = currentUser;
const disabled = (service === 'ldap' && config.LdapNicknameAttributeSet === 'true') ||
(service === 'saml' && config.SamlNicknameAttributeSet === 'true');
return (
<TextSetting
disabled={disabled}
disabled={nicknameDisabled}
id='nickname'
label={holders.nickname}
disabledText={formatMessage({
@ -479,15 +470,12 @@ export default class EditProfile extends PureComponent {
renderPositionSettings = () => {
const {formatMessage} = this.context.intl;
const {config, currentUser, theme} = this.props;
const {positionDisabled, theme} = this.props;
const {position} = this.state;
const {auth_service: service} = currentUser;
const disabled = (service === 'ldap' || service === 'saml') && config.PositionAttribute === 'true';
return (
<TextSetting
disabled={disabled}
disabled={positionDisabled}
id='position'
label={holders.position}
disabledText={formatMessage({

View file

@ -32,9 +32,10 @@ describe('edit_profile', () => {
const baseProps = {
actions,
config: {
ShowEmailAddress: true,
},
firstNameDisabled: true,
lastNameDisabled: true,
nicknameDisabled: true,
positionDisabled: true,
theme: Preferences.THEMES.default,
navigator,
currentUser: {

View file

@ -6,14 +6,39 @@ import {bindActionCreators} from 'redux';
import {getConfig} from 'mattermost-redux/selectors/entities/general';
import {getTheme} from 'mattermost-redux/selectors/entities/preferences';
import {isMinimumServerVersion} from 'mattermost-redux/utils/helpers';
import {setProfileImageUri, removeProfileImage, updateUser} from 'app/actions/views/edit_profile';
import EditProfile from './edit_profile';
function mapStateToProps(state) {
function mapStateToProps(state, ownProps) {
const config = getConfig(state);
const {serverVersion} = state.entities.general;
const {service} = ownProps.currentUser;
const firstNameDisabled = (service === 'ldap' && config.LdapFirstNameAttributeSet === 'true') ||
(service === 'saml' && config.SamlFirstNameAttributeSet === 'true');
const lastNameDisabled = (service === 'ldap' && config.LdapLastNameAttributeSet === 'true') ||
(service === 'saml' && config.SamlLastNameAttributeSet === 'true');
const nicknameDisabled = (service === 'ldap' && config.LdapNicknameAttributeSet === 'true') ||
(service === 'saml' && config.SamlNicknameAttributeSet === 'true');
let positionDisabled = false;
if (isMinimumServerVersion(serverVersion, 5, 12)) {
positionDisabled = (service === 'ldap' && config.LdapPositionAttributeSet === 'true') ||
(service === 'saml' && config.SamlPositionAttributeSet === 'true');
} else {
positionDisabled = (service === 'ldap' || service === 'saml') && config.PositionAttribute === 'true';
}
return {
config: getConfig(state),
firstNameDisabled,
lastNameDisabled,
nicknameDisabled,
positionDisabled,
theme: getTheme(state),
};
}