Removing old config stuff
Этот коммит содержится в:
@@ -42,7 +42,6 @@ func InitApi() {
|
||||
InitWebSocket(r)
|
||||
InitFile(r)
|
||||
InitCommand(r)
|
||||
InitConfig(r)
|
||||
InitAdmin(r)
|
||||
|
||||
templatesDir := utils.FindDir("api/templates")
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package api
|
||||
|
||||
import (
|
||||
l4g "code.google.com/p/log4go"
|
||||
"encoding/json"
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/mattermost/platform/model"
|
||||
"github.com/mattermost/platform/utils"
|
||||
"net/http"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func InitConfig(r *mux.Router) {
|
||||
l4g.Debug("Initializing config api routes")
|
||||
|
||||
sr := r.PathPrefix("/config").Subrouter()
|
||||
sr.Handle("/get_all", ApiAppHandler(getConfig)).Methods("GET")
|
||||
}
|
||||
|
||||
func getConfig(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
settings := make(map[string]string)
|
||||
|
||||
settings["ByPassEmail"] = strconv.FormatBool(utils.Cfg.EmailSettings.ByPassEmail)
|
||||
|
||||
if bytes, err := json.Marshal(settings); err != nil {
|
||||
c.Err = model.NewAppError("getConfig", "Unable to marshall configuration data", err.Error())
|
||||
return
|
||||
} else {
|
||||
w.Write(bytes)
|
||||
}
|
||||
}
|
||||
@@ -282,8 +282,10 @@ func getClientProperties(c *Config) map[string]string {
|
||||
props["SegmentDeveloperKey"] = c.ClientSettings.SegmentDeveloperKey
|
||||
props["GoogleDeveloperKey"] = c.ClientSettings.GoogleDeveloperKey
|
||||
props["AnalyticsUrl"] = c.ServiceSettings.AnalyticsUrl
|
||||
props["ByPassEmail"] = strconv.FormatBool(c.EmailSettings.ByPassEmail)
|
||||
props["ProfileHeight"] = fmt.Sprintf("%v", c.ImageSettings.ProfileHeight)
|
||||
props["ProfileWidth"] = fmt.Sprintf("%v", c.ImageSettings.ProfileWidth)
|
||||
props["ProfileWidth"] = fmt.Sprintf("%v", c.ImageSettings.ProfileWidth)
|
||||
|
||||
return props
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
var utils = require('../utils/utils.jsx');
|
||||
var ConfigStore = require('../stores/config_store.jsx');
|
||||
var Client = require('../utils/client.jsx');
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
var ConfirmModal = require('./confirm_modal.jsx');
|
||||
@@ -22,7 +21,7 @@ export default class InviteMemberModal extends React.Component {
|
||||
emailErrors: {},
|
||||
firstNameErrors: {},
|
||||
lastNameErrors: {},
|
||||
emailEnabled: !ConfigStore.getSettingAsBoolean('ByPassEmail', false)
|
||||
emailEnabled: !global.window.config.ByPassEmail
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -236,11 +236,6 @@ export default class SignupUserComplete extends React.Component {
|
||||
);
|
||||
}
|
||||
|
||||
var termsDisclaimer = null;
|
||||
if (global.window.config.ShowTermsDuringSignup) {
|
||||
termsDisclaimer = <p>By creating an account and using Mattermost you are agreeing to our <a href='/static/help/terms.html'>Terms of Service</a>. If you do not agree, you cannot use this service.</p>;
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<form>
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
var Client = require('../utils/client.jsx');
|
||||
|
||||
export default class TeamSignupAllowedDomainsPage extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
this.submitBack = this.submitBack.bind(this);
|
||||
this.submitNext = this.submitNext.bind(this);
|
||||
|
||||
this.state = {};
|
||||
}
|
||||
submitBack(e) {
|
||||
e.preventDefault();
|
||||
this.props.state.wizard = 'team_url';
|
||||
this.props.updateParent(this.props.state);
|
||||
}
|
||||
submitNext(e) {
|
||||
e.preventDefault();
|
||||
|
||||
if (React.findDOMNode(this.refs.open_network).checked) {
|
||||
this.props.state.wizard = 'send_invites';
|
||||
this.props.state.team.type = 'O';
|
||||
this.props.updateParent(this.props.state);
|
||||
return;
|
||||
}
|
||||
|
||||
if (React.findDOMNode(this.refs.allow).checked) {
|
||||
var name = React.findDOMNode(this.refs.name).value.trim();
|
||||
var domainRegex = /^\w+\.\w+$/;
|
||||
if (!name) {
|
||||
this.setState({nameError: 'This field is required'});
|
||||
return;
|
||||
}
|
||||
|
||||
if (!name.trim().match(domainRegex)) {
|
||||
this.setState({nameError: 'The domain doesn\'t appear valid'});
|
||||
return;
|
||||
}
|
||||
|
||||
this.props.state.wizard = 'send_invites';
|
||||
this.props.state.team.allowed_domains = name;
|
||||
this.props.state.team.type = 'I';
|
||||
this.props.updateParent(this.props.state);
|
||||
} else {
|
||||
this.props.state.wizard = 'send_invites';
|
||||
this.props.state.team.type = 'I';
|
||||
this.props.updateParent(this.props.state);
|
||||
}
|
||||
}
|
||||
render() {
|
||||
Client.track('signup', 'signup_team_04_allow_domains');
|
||||
|
||||
var nameError = null;
|
||||
var nameDivClass = 'form-group';
|
||||
if (this.state.nameError) {
|
||||
nameError = <label className='control-label'>{this.state.nameError}</label>;
|
||||
nameDivClass += ' has-error';
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<form>
|
||||
<img
|
||||
className='signup-team-logo'
|
||||
src='/static/images/logo.png'
|
||||
/>
|
||||
<h2>Email Domain</h2>
|
||||
<p>
|
||||
<div className='checkbox'>
|
||||
<label>
|
||||
<input
|
||||
type='checkbox'
|
||||
ref='allow'
|
||||
defaultChecked={true}
|
||||
/>
|
||||
{' Allow sign up and team discovery with a company email address.'}
|
||||
</label>
|
||||
</div>
|
||||
</p>
|
||||
<p>{'Check this box to allow your team members to sign up using their company email addresses if you share the same domain--otherwise, you need to invite everyone yourself.'}</p>
|
||||
<h4>{'Your team\'s domain for emails'}</h4>
|
||||
<div className={nameDivClass}>
|
||||
<div className='row'>
|
||||
<div className='col-sm-9'>
|
||||
<div className='input-group'>
|
||||
<span className='input-group-addon'>@</span>
|
||||
<input
|
||||
type='text'
|
||||
ref='name'
|
||||
className='form-control'
|
||||
placeholder=''
|
||||
maxLength='128'
|
||||
defaultValue={this.props.state.team.allowed_domains}
|
||||
autoFocus={true}
|
||||
onFocus={this.handleFocus}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{nameError}
|
||||
</div>
|
||||
<p>To allow signups from multiple domains, separate each with a comma.</p>
|
||||
<p>
|
||||
<div className='checkbox'>
|
||||
<label>
|
||||
<input
|
||||
type='checkbox'
|
||||
ref='open_network'
|
||||
defaultChecked={this.props.state.team.type === 'O'}
|
||||
/> Allow anyone to signup to this domain without an invitation.</label>
|
||||
</div>
|
||||
</p>
|
||||
<button
|
||||
type='button'
|
||||
className='btn btn-default'
|
||||
onClick={this.submitBack}
|
||||
>
|
||||
<i className='glyphicon glyphicon-chevron-left'></i> Back
|
||||
</button>
|
||||
<button
|
||||
type='submit'
|
||||
className='btn-primary btn'
|
||||
onClick={this.submitNext}
|
||||
>
|
||||
Next<i className='glyphicon glyphicon-chevron-right'></i>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
TeamSignupAllowedDomainsPage.defaultProps = {
|
||||
state: {}
|
||||
};
|
||||
TeamSignupAllowedDomainsPage.propTypes = {
|
||||
state: React.PropTypes.object,
|
||||
updateParent: React.PropTypes.func
|
||||
};
|
||||
@@ -2,7 +2,6 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
var EmailItem = require('./team_signup_email_item.jsx');
|
||||
var ConfigStore = require('../stores/config_store.jsx');
|
||||
var Client = require('../utils/client.jsx');
|
||||
|
||||
export default class TeamSignupSendInvitesPage extends React.Component {
|
||||
@@ -14,7 +13,7 @@ export default class TeamSignupSendInvitesPage extends React.Component {
|
||||
this.submitSkip = this.submitSkip.bind(this);
|
||||
this.keySubmit = this.keySubmit.bind(this);
|
||||
this.state = {
|
||||
emailEnabled: !ConfigStore.getSettingAsBoolean('ByPassEmail', false)
|
||||
emailEnabled: !global.window.config.ByPassEmail
|
||||
};
|
||||
|
||||
if (!this.state.emailEnabled) {
|
||||
|
||||
@@ -57,7 +57,7 @@ export default class UserProfile extends React.Component {
|
||||
}
|
||||
|
||||
var dataContent = '<img class="user-popover__image" src="/api/v1/users/' + this.state.profile.id + '/image?time=' + this.state.profile.update_at + '" height="128" width="128" />';
|
||||
if (!global.window.config.ShowEmail) {
|
||||
if (!global.window.config.ShowEmailAddress) {
|
||||
dataContent += '<div class="text-nowrap">Email not shared</div>';
|
||||
} else {
|
||||
dataContent += '<div data-toggle="tooltip" title="' + this.state.profile.email + '"><a href="mailto:' + this.state.profile.email + '" class="text-nowrap text-lowercase user-popover__email">' + this.state.profile.email + '</a></div>';
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
var ConfigStore = require('../stores/config_store.jsx');
|
||||
var SettingItemMin = require('./setting_item_min.jsx');
|
||||
var SettingItemMax = require('./setting_item_max.jsx');
|
||||
var SettingPicture = require('./setting_picture.jsx');
|
||||
@@ -209,7 +208,7 @@ export default class UserSettingsGeneralTab extends React.Component {
|
||||
}
|
||||
setupInitialState(props) {
|
||||
var user = props.user;
|
||||
var emailEnabled = !ConfigStore.getSettingAsBoolean('ByPassEmail', false);
|
||||
var emailEnabled = !global.window.config.ByPassEmail;
|
||||
return {username: user.username, firstName: user.first_name, lastName: user.last_name, nickname: user.nickname,
|
||||
email: user.email, picture: null, loadingPicture: false, emailEnabled: emailEnabled};
|
||||
}
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
|
||||
var BrowserStore = require('../stores/browser_store.jsx');
|
||||
|
||||
var Constants = require('../utils/constants.jsx');
|
||||
var ActionTypes = Constants.ActionTypes;
|
||||
|
||||
var CHANGE_EVENT = 'change';
|
||||
|
||||
class ConfigStoreClass extends EventEmitter {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.emitChange = this.emitChange.bind(this);
|
||||
this.addChangeListener = this.addChangeListener.bind(this);
|
||||
this.removeChangeListener = this.removeChangeListener.bind(this);
|
||||
this.getSetting = this.getSetting.bind(this);
|
||||
this.getSettingAsBoolean = this.getSettingAsBoolean.bind(this);
|
||||
this.updateStoredSettings = this.updateStoredSettings.bind(this);
|
||||
}
|
||||
emitChange() {
|
||||
this.emit(CHANGE_EVENT);
|
||||
}
|
||||
addChangeListener(callback) {
|
||||
this.on(CHANGE_EVENT, callback);
|
||||
}
|
||||
removeChangeListener(callback) {
|
||||
this.removeListener(CHANGE_EVENT, callback);
|
||||
}
|
||||
getSetting(key, defaultValue) {
|
||||
return BrowserStore.getItem('config_' + key, defaultValue);
|
||||
}
|
||||
getSettingAsBoolean(key, defaultValue) {
|
||||
var value = this.getSetting(key, defaultValue);
|
||||
|
||||
if (typeof value !== 'string') {
|
||||
return Boolean(value);
|
||||
}
|
||||
|
||||
return value === 'true';
|
||||
}
|
||||
updateStoredSettings(settings) {
|
||||
for (let key in settings) {
|
||||
if (settings.hasOwnProperty(key)) {
|
||||
BrowserStore.setItem('config_' + key, settings[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var ConfigStore = new ConfigStoreClass();
|
||||
|
||||
ConfigStore.dispatchToken = AppDispatcher.register(function registry(payload) {
|
||||
var action = payload.action;
|
||||
|
||||
switch (action.type) {
|
||||
case ActionTypes.RECIEVED_CONFIG:
|
||||
ConfigStore.updateStoredSettings(action.settings);
|
||||
ConfigStore.emitChange();
|
||||
break;
|
||||
default:
|
||||
}
|
||||
});
|
||||
|
||||
export default ConfigStore;
|
||||
@@ -1,15 +0,0 @@
|
||||
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
export var config = {
|
||||
|
||||
AllowSignupDomainsWizard: false,
|
||||
|
||||
// Privacy switches
|
||||
ShowEmail: true,
|
||||
|
||||
// Toggle whether or not users are shown a message about agreeing to the Terms of Service during the signup process
|
||||
ShowTermsDuringSignup: false
|
||||
};
|
||||
|
||||
global.window.config = config;
|
||||
Ссылка в новой задаче
Block a user