Removing old config stuff
Этот коммит содержится в:
@@ -42,7 +42,6 @@ func InitApi() {
|
|||||||
InitWebSocket(r)
|
InitWebSocket(r)
|
||||||
InitFile(r)
|
InitFile(r)
|
||||||
InitCommand(r)
|
InitCommand(r)
|
||||||
InitConfig(r)
|
|
||||||
InitAdmin(r)
|
InitAdmin(r)
|
||||||
|
|
||||||
templatesDir := utils.FindDir("api/templates")
|
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["SegmentDeveloperKey"] = c.ClientSettings.SegmentDeveloperKey
|
||||||
props["GoogleDeveloperKey"] = c.ClientSettings.GoogleDeveloperKey
|
props["GoogleDeveloperKey"] = c.ClientSettings.GoogleDeveloperKey
|
||||||
props["AnalyticsUrl"] = c.ServiceSettings.AnalyticsUrl
|
props["AnalyticsUrl"] = c.ServiceSettings.AnalyticsUrl
|
||||||
|
props["ByPassEmail"] = strconv.FormatBool(c.EmailSettings.ByPassEmail)
|
||||||
props["ProfileHeight"] = fmt.Sprintf("%v", c.ImageSettings.ProfileHeight)
|
props["ProfileHeight"] = fmt.Sprintf("%v", c.ImageSettings.ProfileHeight)
|
||||||
props["ProfileWidth"] = fmt.Sprintf("%v", c.ImageSettings.ProfileWidth)
|
props["ProfileWidth"] = fmt.Sprintf("%v", c.ImageSettings.ProfileWidth)
|
||||||
|
props["ProfileWidth"] = fmt.Sprintf("%v", c.ImageSettings.ProfileWidth)
|
||||||
|
|
||||||
return props
|
return props
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
// See License.txt for license information.
|
// See License.txt for license information.
|
||||||
|
|
||||||
var utils = require('../utils/utils.jsx');
|
var utils = require('../utils/utils.jsx');
|
||||||
var ConfigStore = require('../stores/config_store.jsx');
|
|
||||||
var Client = require('../utils/client.jsx');
|
var Client = require('../utils/client.jsx');
|
||||||
var UserStore = require('../stores/user_store.jsx');
|
var UserStore = require('../stores/user_store.jsx');
|
||||||
var ConfirmModal = require('./confirm_modal.jsx');
|
var ConfirmModal = require('./confirm_modal.jsx');
|
||||||
@@ -22,7 +21,7 @@ export default class InviteMemberModal extends React.Component {
|
|||||||
emailErrors: {},
|
emailErrors: {},
|
||||||
firstNameErrors: {},
|
firstNameErrors: {},
|
||||||
lastNameErrors: {},
|
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 (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<form>
|
<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.
|
// See License.txt for license information.
|
||||||
|
|
||||||
var EmailItem = require('./team_signup_email_item.jsx');
|
var EmailItem = require('./team_signup_email_item.jsx');
|
||||||
var ConfigStore = require('../stores/config_store.jsx');
|
|
||||||
var Client = require('../utils/client.jsx');
|
var Client = require('../utils/client.jsx');
|
||||||
|
|
||||||
export default class TeamSignupSendInvitesPage extends React.Component {
|
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.submitSkip = this.submitSkip.bind(this);
|
||||||
this.keySubmit = this.keySubmit.bind(this);
|
this.keySubmit = this.keySubmit.bind(this);
|
||||||
this.state = {
|
this.state = {
|
||||||
emailEnabled: !ConfigStore.getSettingAsBoolean('ByPassEmail', false)
|
emailEnabled: !global.window.config.ByPassEmail
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!this.state.emailEnabled) {
|
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" />';
|
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>';
|
dataContent += '<div class="text-nowrap">Email not shared</div>';
|
||||||
} else {
|
} 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>';
|
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.
|
// See License.txt for license information.
|
||||||
|
|
||||||
var UserStore = require('../stores/user_store.jsx');
|
var UserStore = require('../stores/user_store.jsx');
|
||||||
var ConfigStore = require('../stores/config_store.jsx');
|
|
||||||
var SettingItemMin = require('./setting_item_min.jsx');
|
var SettingItemMin = require('./setting_item_min.jsx');
|
||||||
var SettingItemMax = require('./setting_item_max.jsx');
|
var SettingItemMax = require('./setting_item_max.jsx');
|
||||||
var SettingPicture = require('./setting_picture.jsx');
|
var SettingPicture = require('./setting_picture.jsx');
|
||||||
@@ -209,7 +208,7 @@ export default class UserSettingsGeneralTab extends React.Component {
|
|||||||
}
|
}
|
||||||
setupInitialState(props) {
|
setupInitialState(props) {
|
||||||
var user = props.user;
|
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,
|
return {username: user.username, firstName: user.first_name, lastName: user.last_name, nickname: user.nickname,
|
||||||
email: user.email, picture: null, loadingPicture: false, emailEnabled: emailEnabled};
|
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