hemat_solution/src/app/_services/auth.service.ts
2024-04-19 12:53:45 +07:00

121 lines
2.7 KiB
TypeScript

import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/compat/auth';
import firebase from 'firebase/compat/app';
@Injectable()
export class AuthService {
constructor(public afAuth: AngularFireAuth) {}
// Facebook login
doFacebookLogin() {
return new Promise<any>((resolve, reject) => {
const provider = new firebase.auth.FacebookAuthProvider();
this.afAuth.signInWithPopup(provider).then(
res => {
resolve(res);
},
err => {
console.log(err);
reject(err);
}
);
});
}
// Github login
doGitHubLogin() {
return new Promise<any>((resolve, reject) => {
const provider = new firebase.auth.GithubAuthProvider();
this.afAuth.signInWithPopup(provider).then(
res => {
resolve(res);
},
err => {
console.log(err);
reject(err);
}
);
});
}
// Twitter login
doTwitterLogin() {
return new Promise<any>((resolve, reject) => {
const provider = new firebase.auth.TwitterAuthProvider();
this.afAuth.signInWithPopup(provider).then(
res => {
resolve(res);
},
err => {
console.log(err);
reject(err);
}
);
});
}
// Google login
doGoogleLogin() {
return new Promise<any>((resolve, reject) => {
const provider = new firebase.auth.GoogleAuthProvider();
provider.addScope('profile');
provider.addScope('email');
this.afAuth.signInWithPopup(provider).then(
res => {
resolve(res);
},
err => {
console.log(err);
reject(err);
}
);
});
}
// Register
doRegister(value) {
return new Promise<any>((resolve, reject) => {
firebase
.auth()
.createUserWithEmailAndPassword(value.email, value.password)
.then(
res => {
resolve(res);
},
err => reject(err)
);
});
}
// Login
doLogin(value) {
return new Promise<any>((resolve, reject) => {
firebase
.auth()
.signInWithEmailAndPassword(value.email, value.password)
.then(
res => {
resolve(res);
},
err => reject(err)
);
});
}
// Logout
doLogout() {
return new Promise<void>((resolve, reject) => {
if (firebase.auth().currentUser) {
localStorage.removeItem('currentUser');
localStorage.removeItem('remember');
this.afAuth.signOut();
resolve();
} else {
localStorage.removeItem('currentUser');
resolve();
}
});
}
}