Created
June 9, 2021 19:43
-
-
Save Auz/7b2595c54b817c7a58430b2c50fe8836 to your computer and use it in GitHub Desktop.
Auth0 custom login javascript for login, register, forgot password and google login
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if(config && "internalOptions" in config) { | |
var leeway = config.internalOptions.leeway; | |
if (leeway) { | |
var convertedLeeway = parseInt(leeway); | |
if (!isNaN(convertedLeeway)) { | |
config.internalOptions.leeway = convertedLeeway; | |
} | |
} | |
} | |
var params = Object.assign({ | |
overrides: { | |
__tenant: config.auth0Tenant, | |
__token_issuer: config.authorizationServer.issuer | |
}, | |
domain: config.auth0Domain, | |
clientID: config.clientID, | |
redirectUri: config.callbackURL, | |
responseType: 'code' | |
}, config.internalOptions); | |
var webAuth = new auth0.WebAuth(params); | |
var databaseConnection = 'Username-Password-Authentication'; | |
var captcha = webAuth.renderCaptcha( | |
document.querySelector('.captcha-container') | |
); | |
function login(e) { | |
e.preventDefault(); | |
clearErrors(); | |
var button = this; | |
var username = document.getElementById('loginemail').value; | |
var password = document.getElementById('loginpassword').value; | |
button.disabled = true; | |
webAuth.login({ | |
realm: databaseConnection, | |
username: username, | |
password: password, | |
captcha: captcha.getValue() | |
}, function(err) { | |
if (err) displayError(err); | |
button.disabled = false; | |
}); | |
} | |
function forgotpassword(e) { | |
e.preventDefault(); | |
clearErrors(); | |
var button = this; | |
var email = document.getElementById('forgotemail').value; | |
button.disabled = true; | |
webAuth.changePassword({ | |
connection: databaseConnection, | |
email: email, | |
captcha: captcha.getValue() | |
}, function (err, resp) { | |
if (err) { | |
if (err) displayError(err); | |
} else { | |
document.getElementById("forgot-contents").innerHTML = resp; | |
document.getElementById("btn-forgot").classList.add('d-none'); | |
button.disabled = false; | |
} | |
}); | |
} | |
function signup(e) { | |
e.preventDefault(); | |
clearErrors(); | |
var button = this; | |
var email = document.getElementById('regemail').value; | |
var password = document.getElementById('regpassword').value; | |
button.disabled = true; | |
webAuth.redirect.signupAndLogin({ | |
connection: databaseConnection, | |
email: email, | |
password: password, | |
captcha: captcha.getValue() | |
}, function(err) { | |
if(err) { | |
displayError(err); | |
} | |
else { | |
console.error('unknown error', err); | |
} | |
button.disabled = false; | |
}); | |
} | |
function loginWithGoogle() { | |
webAuth.authorize({ | |
connection: 'google-oauth2' | |
}, function(err) { | |
if (err) displayError(err); | |
}); | |
} | |
function clearErrors() { | |
var errorMessage = document.getElementsByClassName('error-message'); | |
for (var i=0; i<errorMessage.length; i++) { | |
errorMessage[i].innerHTML = ""; | |
errorMessage[i].style.display = 'none'; | |
} | |
} | |
function displayError(err) { | |
captcha.reload(); | |
var errorMessage = document.getElementsByClassName('error-message'); | |
for (var i=0; i<errorMessage.length; i++) { | |
errorMessage[i].innerHTML = err.policy || err.description; | |
errorMessage[i].style.display = 'block'; | |
} | |
} | |
document.getElementById('btn-login').addEventListener('click', login); | |
document.getElementById('btn-google').addEventListener('click', loginWithGoogle); | |
document.getElementById('btn-google2').addEventListener('click', loginWithGoogle); | |
document.getElementById('btn-signup').addEventListener('click', signup); | |
document.getElementById('btn-forgot').addEventListener('click', forgotpassword); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment