accounts-ui/imports/helpers.js
Tim Brandin a61a789ec2 Merge pull request #55 from todda00/enroll-formstate
Create new form state for Enroll Account
2017-01-07 12:08:57 +01:00

117 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

try { import { browserHistory } from 'react-router'; } catch(e) {}
export const loginButtonsSession = Accounts._loginButtonsSession;
export const STATES = {
SIGN_IN: Symbol('SIGN_IN'),
SIGN_UP: Symbol('SIGN_UP'),
PROFILE: Symbol('PROFILE'),
PASSWORD_CHANGE: Symbol('PASSWORD_CHANGE'),
PASSWORD_RESET: Symbol('PASSWORD_RESET'),
ENROLL_ACCOUNT: Symbol('ENROLL_ACCOUNT')
};
export function getLoginServices() {
// First look for OAuth services.
const services = Package['accounts-oauth'] ? Accounts.oauth.serviceNames() : [];
// Be equally kind to all login services. This also preserves
// backwards-compatibility.
services.sort();
return _.map(services, function(name){
return {name: name};
});
};
// Export getLoginServices using old style globals for accounts-base which
// requires it.
this.getLoginServices = getLoginServices;
export function hasPasswordService() {
// First look for OAuth services.
return !!Package['accounts-password'];
};
export function loginResultCallback(service, err) {
if (!err) {
} else if (err instanceof Accounts.LoginCancelledError) {
// do nothing
} else if (err instanceof ServiceConfiguration.ConfigError) {
} else {
//loginButtonsSession.errorMessage(err.reason || "Unknown error");
}
if (Meteor.isClient) {
if (typeof redirect === 'string'){
window.location.href = '/';
}
if (typeof service === 'function'){
service();
}
}
};
export function passwordSignupFields() {
return Accounts.ui._options.passwordSignupFields || "EMAIL_ONLY_NO_PASSWORD";
};
export function validateEmail(email, showMessage, clearMessage) {
if (passwordSignupFields() === "USERNAME_AND_OPTIONAL_EMAIL" && email === '') {
return true;
}
if (Accounts.ui._options.emailPattern.test(email)) {
return true;
} else if (!email || email.length === 0) {
showMessage(T9n.get("error.emailRequired"), 'warning', false, 'email');
return false;
} else {
showMessage(T9n.get("error.accounts.Invalid email"), 'warning', false, 'email');
return false;
}
}
export function validatePassword(password = '', showMessage, clearMessage){
if (password.length >= Accounts.ui._options.minimumPasswordLength) {
return true;
} else {
const errMsg = T9n.get("error.minChar").replace(/7/, Accounts.ui._options.minimumPasswordLength);
showMessage(errMsg, 'warning', false, 'password');
return false;
}
};
export function validateUsername(username, showMessage, clearMessage, formState) {
if ( username ) {
return true;
} else {
const fieldName = (passwordSignupFields() === 'USERNAME_ONLY' || formState === STATES.SIGN_UP) ? 'username' : 'usernameOrEmail';
showMessage(T9n.get("error.usernameRequired"), 'warning', false, fieldName);
return false;
}
}
export function redirect(redirect) {
if (Meteor.isClient) {
if (window.history) {
// Run after all app specific redirects, i.e. to the login screen.
Meteor.setTimeout(() => {
if (Package['kadira:flow-router']) {
Package['kadira:flow-router'].FlowRouter.go(redirect);
} else if (Package['kadira:flow-router-ssr']) {
Package['kadira:flow-router-ssr'].FlowRouter.go(redirect);
} else if (browserHistory) {
browserHistory.push(redirect);
} else {
window.history.pushState( {} , 'redirect', redirect );
}
}, 100);
}
}
}
export function capitalize(string) {
return string.replace(/\-/, ' ').split(' ').map(word => {
return word.charAt(0).toUpperCase() + word.slice(1);
}).join(' ');
}