@bigin/ns-firebase
Version:
167 lines (166 loc) • 4.25 kB
JavaScript
import { firebase } from '../../firebase';
export var auth;
(function (auth) {
class Auth {
loginHelper(options) {
return new Promise((resolve, reject) => {
firebase
.login(options)
.then((user) => {
this.currentUser = user;
this.authStateChangedHandler && this.authStateChangedHandler(user);
resolve({
additionalUserInfo: user.additionalUserInfo,
credential: null,
operationType: 'SignIn',
user: user,
});
})
.catch((err) => {
let code = 'auth/exception';
let message = err.toString();
if (message.includes('com.google.firebase.auth.FirebaseAuthInvalidCredentialsException')) {
code = 'auth/wrong-password';
} else if (message.includes('com.google.firebase.auth.FirebaseAuthInvalidUserException')) {
code = 'auth/user-not-found';
}
this.authStateOnErrorHandler && this.authStateOnErrorHandler(err.toString());
reject({
code: code,
message: message,
});
});
});
}
onAuthStateChanged(handler, error, completed) {
this.authStateChangedHandler = handler;
if (error) this.authStateOnErrorHandler = error;
console.log('>> added onAuthStateChanged handler');
handler(this.currentUser);
return () => {
this.authStateChangedHandler = undefined;
this.authStateOnErrorHandler = undefined;
};
}
signOut() {
return new Promise((resolve, reject) => {
firebase
.logout()
.then(() => {
this.currentUser = undefined;
this.authStateChangedHandler && this.authStateChangedHandler();
resolve();
})
.catch((err) => {
this.authStateOnErrorHandler && this.authStateOnErrorHandler(err);
reject({
message: err,
});
});
});
}
unlink(providerId) {
return new Promise((resolve, reject) => {
firebase
.unlink(providerId)
.then((user) => {
this.currentUser = user;
resolve(user);
})
.catch((err) => {
reject({
message: err,
});
});
});
}
signInWithEmailAndPassword(email, password) {
const emailOption = {
type: firebase.LoginType.PASSWORD,
passwordOptions: {
email: email,
password: password,
},
};
return this.loginHelper(emailOption);
}
signInWithCustomToken(token) {
const customTokenOption = {
type: firebase.LoginType.CUSTOM,
customOptions: {
token: token,
},
};
return this.loginHelper(customTokenOption);
}
signInAnonymously() {
const anonymousOption = {
type: firebase.LoginType.ANONYMOUS,
};
return this.loginHelper(anonymousOption);
}
sendSignInLinkToEmail(email, actionCodeSettings) {
const sendSignInLinklOption = {
type: firebase.LoginType.EMAIL_LINK,
emailLinkOptions: {
email: email,
url: actionCodeSettings.url,
},
};
return this.loginHelper(sendSignInLinklOption);
}
signInWithEmailLink(email, emailLink) {
const signInWithEmailOption = {
type: firebase.LoginType.EMAIL_LINK,
emailLinkOptions: {
email: email,
url: emailLink,
},
};
return this.loginHelper(signInWithEmailOption);
}
createUserWithEmailAndPassword(email, password) {
return new Promise((resolve, reject) => {
firebase
.createUser({
email: email,
password: password,
})
.then((user) => {
this.currentUser = user;
resolve(user);
})
.catch((err) => reject(err));
});
}
updateEmail(newEmail) {
return new Promise((resolve, reject) => {
firebase
.updateEmail(newEmail)
.then(() => resolve())
.catch((err) => reject(err));
});
}
updatePassword(newPassword) {
return new Promise((resolve, reject) => {
firebase
.updatePassword(newPassword)
.then(() => resolve())
.catch((err) => reject(err));
});
}
sendPasswordResetEmail(email) {
return new Promise((resolve, reject) => {
firebase
.sendPasswordResetEmail(email)
.then(() => resolve())
.catch((err) => reject(err));
});
}
fetchSignInMethodsForEmail(email) {
return firebase.fetchSignInMethodsForEmail(email);
}
}
auth.Auth = Auth;
})(auth || (auth = {}));
//# sourceMappingURL=index.js.map