Merge pull request #67 from Qolzam/pr/66
[Update Package] Update firebase to version 5.*
This commit is contained in:
@@ -21,80 +21,84 @@ import { injectable } from 'inversify'
|
|||||||
@injectable()
|
@injectable()
|
||||||
export class AuthorizeService implements IAuthorizeService {
|
export class AuthorizeService implements IAuthorizeService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Login the user
|
* Login the user
|
||||||
*
|
*/
|
||||||
* @returns {Promise<LoginUser>}
|
public async login(email: string, password: string) {
|
||||||
* @memberof IAuthorizeService
|
try {
|
||||||
*/
|
const result = await firebaseAuth()
|
||||||
public login: (email: string, password: string) => Promise<LoginUser> = (email, password) => {
|
.signInWithEmailAndPassword(email, password)
|
||||||
|
const {user} = result
|
||||||
|
if (user) {
|
||||||
|
return new LoginUser(user.uid, user.emailVerified)
|
||||||
|
|
||||||
return new Promise<LoginUser>((resolve, reject) => {
|
} else {
|
||||||
firebaseAuth()
|
throw new SocialError('AuthorizeService/login', 'User object is empty!')
|
||||||
.signInWithEmailAndPassword(email, password)
|
}
|
||||||
.then((result) => {
|
|
||||||
resolve(new LoginUser(result.uid, result.emailVerified))
|
} catch (error) {
|
||||||
})
|
throw new SocialError(error.code, error.message)
|
||||||
.catch((error: any) => {
|
}
|
||||||
reject(new SocialError(error.code, error.message))
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logs out the user
|
* Logs out the user
|
||||||
*
|
*
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
* @memberof IAuthorizeService
|
* @memberof IAuthorizeService
|
||||||
*/
|
*/
|
||||||
public logout: () => Promise<void> = () => {
|
public logout: () => Promise<void> = () => {
|
||||||
return new Promise<void>((resolve, reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
firebaseAuth()
|
firebaseAuth()
|
||||||
.signOut()
|
.signOut()
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
.catch((error: any) => {
|
.catch((error: any) => {
|
||||||
|
|
||||||
reject(new SocialError(error.code, error.message))
|
reject(new SocialError(error.code, error.message))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a user
|
* Register a user
|
||||||
*
|
*/
|
||||||
* @returns {Promise<void>}
|
public async registerUser(registerUser: User) {
|
||||||
* @memberof IAuthorizeService
|
try {
|
||||||
*/
|
const result = await firebaseAuth()
|
||||||
public registerUser: (user: User) => Promise<RegisterUserResult> = (user) => {
|
.createUserWithEmailAndPassword(registerUser.email as string, registerUser.password as string)
|
||||||
return new Promise<RegisterUserResult>((resolve, reject) => {
|
const {user} = result
|
||||||
firebaseAuth()
|
if (user) {
|
||||||
.createUserWithEmailAndPassword(user.email as string, user.password as string)
|
const { uid, email } = user
|
||||||
.then((signupResult) => {
|
const registerResult = await this.storeUserInformation(uid, email!, registerUser.fullName, '')
|
||||||
const {uid, email} = signupResult
|
return registerResult
|
||||||
this.storeUserInformation(uid,email,user.fullName,'').then(resolve)
|
|
||||||
})
|
} else {
|
||||||
.catch((error: any) => reject(new SocialError(error.code, error.message)))
|
throw new SocialError('AuthorizeService/login', 'User object is empty!')
|
||||||
})
|
}
|
||||||
|
} catch (error) {
|
||||||
|
throw new SocialError(error.code, error.message)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update user password
|
* Update user password
|
||||||
*
|
*
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
* @memberof IAuthorizeService
|
* @memberof IAuthorizeService
|
||||||
*/
|
*/
|
||||||
public updatePassword: (newPassword: string) => Promise<void> = (newPassword) => {
|
public updatePassword: (newPassword: string) => Promise<void> = (newPassword) => {
|
||||||
|
|
||||||
return new Promise<void>((resolve, reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
let user = firebaseAuth().currentUser
|
let user = firebaseAuth().currentUser
|
||||||
if (user) {
|
if (user) {
|
||||||
user.updatePassword(newPassword).then(() => {
|
user.updatePassword(newPassword).then(() => {
|
||||||
// Update successful.
|
// Update successful.
|
||||||
resolve()
|
resolve()
|
||||||
}).catch((error: any) => {
|
}).catch((error: any) => {
|
||||||
// An error happened.
|
// An error happened.
|
||||||
reject(new SocialError(error.code, error.message))
|
reject(new SocialError(error.code, error.message))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -108,7 +112,7 @@ export class AuthorizeService implements IAuthorizeService {
|
|||||||
* @memberof IAuthorizeService
|
* @memberof IAuthorizeService
|
||||||
*/
|
*/
|
||||||
public onAuthStateChanged: (callBack: (isVerifide: boolean, user: User) => void) => any = (callBack) => {
|
public onAuthStateChanged: (callBack: (isVerifide: boolean, user: User) => void) => any = (callBack) => {
|
||||||
firebaseAuth().onAuthStateChanged( (user: any) => {
|
firebaseAuth().onAuthStateChanged((user: any) => {
|
||||||
let isVerifide = false
|
let isVerifide = false
|
||||||
if (user) {
|
if (user) {
|
||||||
if (user.emailVerified || user.providerData[0].providerId.trim() !== 'password') {
|
if (user.emailVerified || user.providerData[0].providerId.trim() !== 'password') {
|
||||||
@@ -117,7 +121,7 @@ export class AuthorizeService implements IAuthorizeService {
|
|||||||
isVerifide = false
|
isVerifide = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
callBack(isVerifide,user)
|
callBack(isVerifide, user)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +131,7 @@ export class AuthorizeService implements IAuthorizeService {
|
|||||||
* @memberof AuthorizeService
|
* @memberof AuthorizeService
|
||||||
*/
|
*/
|
||||||
public resetPassword: (email: string) => Promise<void> = (email) => {
|
public resetPassword: (email: string) => Promise<void> = (email) => {
|
||||||
return new Promise<void>((resolve,reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
let auth = firebaseAuth()
|
let auth = firebaseAuth()
|
||||||
|
|
||||||
auth.sendPasswordResetEmail(email).then(function () {
|
auth.sendPasswordResetEmail(email).then(function () {
|
||||||
@@ -145,7 +149,7 @@ export class AuthorizeService implements IAuthorizeService {
|
|||||||
* @memberof AuthorizeService
|
* @memberof AuthorizeService
|
||||||
*/
|
*/
|
||||||
public sendEmailVerification: () => Promise<void> = () => {
|
public sendEmailVerification: () => Promise<void> = () => {
|
||||||
return new Promise<void>((resolve,reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
let auth = firebaseAuth()
|
let auth = firebaseAuth()
|
||||||
const user = auth.currentUser
|
const user = auth.currentUser
|
||||||
|
|
||||||
@@ -164,7 +168,7 @@ export class AuthorizeService implements IAuthorizeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public loginWithOAuth: (type: OAuthType) => Promise<LoginUser> = (type) => {
|
public loginWithOAuth: (type: OAuthType) => Promise<LoginUser> = (type) => {
|
||||||
return new Promise<LoginUser>((resolve,reject) => {
|
return new Promise<LoginUser>((resolve, reject) => {
|
||||||
|
|
||||||
let provider: any
|
let provider: any
|
||||||
|
|
||||||
@@ -179,19 +183,18 @@ export class AuthorizeService implements IAuthorizeService {
|
|||||||
provider = new firebaseAuth.GoogleAuthProvider()
|
provider = new firebaseAuth.GoogleAuthProvider()
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
throw new SocialError('authorizeService/loginWithOAuth','None of OAuth type is matched!')
|
throw new SocialError('authorizeService/loginWithOAuth', 'None of OAuth type is matched!')
|
||||||
}
|
}
|
||||||
firebaseAuth().signInWithPopup(provider).then((result) => {
|
firebaseAuth().signInWithPopup(provider).then((result) => {
|
||||||
// This gives you a GitHub Access Token. You can use it to access the GitHub API.
|
|
||||||
let token = result.credential.accessToken
|
|
||||||
// The signed-in user info.
|
// The signed-in user info.
|
||||||
const {user} = result
|
const user = result.user!
|
||||||
const {credential} = result
|
const { credential } = result
|
||||||
const {uid, displayName, email, photoURL} = user
|
const { uid, displayName, email, photoURL } = user
|
||||||
const {accessToken, providerId} = credential
|
const { providerId } = credential!
|
||||||
this.storeUserProviderData(uid,email,displayName,photoURL,providerId,accessToken)
|
this.storeUserProviderData(uid, email!, displayName!, photoURL!, providerId, 'No Access token provided!')
|
||||||
// this.storeUserInformation(uid,email,displayName,photoURL).then(resolve)
|
// this.storeUserInformation(uid,email,displayName,photoURL).then(resolve)
|
||||||
resolve(new LoginUser(user.uid,true,providerId,displayName,email,photoURL))
|
resolve(new LoginUser(user.uid, true, providerId, displayName!, email!, photoURL!))
|
||||||
|
|
||||||
}).catch(function (error: any) {
|
}).catch(function (error: any) {
|
||||||
// Handle Errors here.
|
// Handle Errors here.
|
||||||
@@ -214,7 +217,7 @@ export class AuthorizeService implements IAuthorizeService {
|
|||||||
* @memberof AuthorizeService
|
* @memberof AuthorizeService
|
||||||
*/
|
*/
|
||||||
private storeUserInformation = (userId: string, email: string, fullName: string, avatar: string) => {
|
private storeUserInformation = (userId: string, email: string, fullName: string, avatar: string) => {
|
||||||
return new Promise<RegisterUserResult>((resolve,reject) => {
|
return new Promise<RegisterUserResult>((resolve, reject) => {
|
||||||
db.doc(`userInfo/${userId}`).set(
|
db.doc(`userInfo/${userId}`).set(
|
||||||
{
|
{
|
||||||
id: userId,
|
id: userId,
|
||||||
@@ -225,10 +228,10 @@ export class AuthorizeService implements IAuthorizeService {
|
|||||||
email
|
email
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
resolve(new RegisterUserResult(userId))
|
resolve(new RegisterUserResult(userId))
|
||||||
})
|
})
|
||||||
.catch((error: any) => reject(new SocialError(error.name, 'firestore/storeUserInformation : ' + error.message)))
|
.catch((error: any) => reject(new SocialError(error.name, 'firestore/storeUserInformation : ' + error.message)))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,22 +249,22 @@ export class AuthorizeService implements IAuthorizeService {
|
|||||||
providerId: string,
|
providerId: string,
|
||||||
accessToken: string
|
accessToken: string
|
||||||
) => {
|
) => {
|
||||||
return new Promise<RegisterUserResult>((resolve,reject) => {
|
return new Promise<RegisterUserResult>((resolve, reject) => {
|
||||||
db.doc(`userProviderInfo/${userId}`)
|
db.doc(`userProviderInfo/${userId}`)
|
||||||
.set(
|
.set(
|
||||||
{
|
{
|
||||||
userId,
|
userId,
|
||||||
email,
|
email,
|
||||||
fullName,
|
fullName,
|
||||||
avatar,
|
avatar,
|
||||||
providerId,
|
providerId,
|
||||||
accessToken
|
accessToken
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
resolve(new RegisterUserResult(userId))
|
resolve(new RegisterUserResult(userId))
|
||||||
})
|
})
|
||||||
.catch((error: any) => reject(new SocialError(error.name, error.message)))
|
.catch((error: any) => reject(new SocialError(error.name, error.message)))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user