mirror of
https://github.com/vale981/accounts-ui
synced 2025-03-05 18:01:39 -05:00
117 lines
3.5 KiB
JavaScript
117 lines
3.5 KiB
JavaScript
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(' ');
|
||
}
|