From 9474532386f0727e42a4a94a662fcc0947be3713 Mon Sep 17 00:00:00 2001 From: Wilker Lucio Date: Thu, 20 Mar 2014 20:54:44 -0300 Subject: [PATCH 1/3] added interfaces for firebase simple login --- firebase/firebase-simplelogin-tests.ts | 78 +++++++++++++++++++++ firebase/firebase-simplelogin.d.ts | 94 ++++++++++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 firebase/firebase-simplelogin-tests.ts create mode 100644 firebase/firebase-simplelogin.d.ts diff --git a/firebase/firebase-simplelogin-tests.ts b/firebase/firebase-simplelogin-tests.ts new file mode 100644 index 000000000..e6c834fcf --- /dev/null +++ b/firebase/firebase-simplelogin-tests.ts @@ -0,0 +1,78 @@ +/// + +var chatRef: Firebase = new Firebase('https://.firebaseio.com'); +var auth: FirebaseSimpleLogin = new FirebaseSimpleLogin(chatRef, function(error, user) { + if (error) { + // an error occurred while attempting login + switch(error.code) { + case 'INVALID_EMAIL': + case 'INVALID_PASSWORD': + default: + } + } else if (user) { + // user authenticated with Firebase + console.log('User ID: ' + user.id + ', Provider: ' + user.provider); + } else { + // user is logged out + } +}); + +var email = 'my@email.com'; +var password = 'secret'; +var oldPassword = 'secret'; +var newPassword = 'secret'; + +auth.login('password', { + email: '', + password: '', + rememberMe: true +}); + +auth.login('facebook', { + rememberMe: true, + scope: 'email,user_likes' +}); + +auth.login('github', { + rememberMe: true, + scope: 'user,gist' +}); + +auth.login('google', { + rememberMe: true, + scope: 'https://www.googleapis.com/auth/plus.login' +}); + +auth.login('persona', { + rememberMe: true +}); + +auth.login('twitter', { + rememberMe: true +}); + +auth.login('anonymous'); + +auth.createUser(email, password, function(error, user) { + if (!error) { + console.log('User Id: ' + user.id + ', Email: ' + user.email); + } +}); + +auth.changePassword(email, oldPassword, newPassword, function(error, success) { + if (!error) { + console.log('Password changed successfully'); + } +}); + +auth.sendPasswordResetEmail(email, function(error, success) { + if (!error) { + console.log('Password reset email sent successfully'); + } +}); + +auth.removeUser(email, password, function(error, success) { + if (!error) { + console.log('User deleted successfully'); + } +}); \ No newline at end of file diff --git a/firebase/firebase-simplelogin.d.ts b/firebase/firebase-simplelogin.d.ts new file mode 100644 index 000000000..a617ef794 --- /dev/null +++ b/firebase/firebase-simplelogin.d.ts @@ -0,0 +1,94 @@ +// Type definitions for Firebase Simple Login +// Project: https://www.firebase.com/docs/security/simple-login-overview.html +// Definitions by: Wilker Lucio +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +interface IFirebaseSimpleLoginError { + code: string; + message: string; +} + +interface IFirebaseSimpleLoginOptions { + // general options + debug?: boolean + rememberMe?: boolean + + // email + email?: string + password?: string + + // facebook / github / google / twitter + preferRedirect?: boolean + + // facebook / github / google + scope?: string + + // facebook + access_token?: string + + // twitter + oauth_token?: string + + // persona + backgroundColor?: string + privacyPolicy?: string + siteLogo?: string + siteName?: string + termsOfService?: string +} + +interface IFirebaseSimpleLoginUser { + // general data + firebaseAuthToken: string; + id: string; + provider: string; + uid: string; + + // email / persona + md5_hash?: string; + + // email + email?: string; + + // facebook / github / google / twitter + accessToken?: string + displayName?: string + thirdPartyUserData?: Object + + // github / twitter + username?: string + + // twitter + accessTokenSecret?: string +} + +declare class FirebaseSimpleLogin { + email: string; + id: string; + provider: string; + uid: string; + username: string; + + constructor(firebase: Firebase, callback: (err: IFirebaseSimpleLoginError, user: IFirebaseSimpleLoginUser) => any); + + login(loginType: string, options?: IFirebaseSimpleLoginOptions); + logout(); + + createUser(email: string, + password: string, + callback?: (err: IFirebaseSimpleLoginError, user: IFirebaseSimpleLoginUser) => any); + + changePassword(email: string, + oldPassword: string, + newPassword: string, + callback?: (err: IFirebaseSimpleLoginError, success: boolean) => any); + + sendPasswordResetEmail(email: string, + callback: (err: IFirebaseSimpleLoginError, success: boolean) => any); + + removeUser(email: string, + password: string, + callback: (err: IFirebaseSimpleLoginError, success: boolean) => any); +} \ No newline at end of file From 960179b8a28cf12808367c28a5f4c75f34cceac2 Mon Sep 17 00:00:00 2001 From: Wilker Lucio Date: Thu, 20 Mar 2014 21:00:38 -0300 Subject: [PATCH 2/3] added explicitly void return type for firebase simple login calls --- firebase/firebase-simplelogin.d.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/firebase/firebase-simplelogin.d.ts b/firebase/firebase-simplelogin.d.ts index a617ef794..7e30e9ad1 100644 --- a/firebase/firebase-simplelogin.d.ts +++ b/firebase/firebase-simplelogin.d.ts @@ -73,22 +73,22 @@ declare class FirebaseSimpleLogin { constructor(firebase: Firebase, callback: (err: IFirebaseSimpleLoginError, user: IFirebaseSimpleLoginUser) => any); - login(loginType: string, options?: IFirebaseSimpleLoginOptions); - logout(); + login(loginType: string, options?: IFirebaseSimpleLoginOptions): void; + logout(): void; createUser(email: string, password: string, - callback?: (err: IFirebaseSimpleLoginError, user: IFirebaseSimpleLoginUser) => any); + callback?: (err: IFirebaseSimpleLoginError, user: IFirebaseSimpleLoginUser) => any): void; changePassword(email: string, oldPassword: string, newPassword: string, - callback?: (err: IFirebaseSimpleLoginError, success: boolean) => any); + callback?: (err: IFirebaseSimpleLoginError, success: boolean) => any): void; sendPasswordResetEmail(email: string, - callback: (err: IFirebaseSimpleLoginError, success: boolean) => any); + callback: (err: IFirebaseSimpleLoginError, success: boolean) => any): void; removeUser(email: string, password: string, - callback: (err: IFirebaseSimpleLoginError, success: boolean) => any); + callback: (err: IFirebaseSimpleLoginError, success: boolean) => any): void; } \ No newline at end of file From 5c914fb2967ba27fbe0a09a2d44aafe769855cfe Mon Sep 17 00:00:00 2001 From: Wilker Lucio Date: Fri, 21 Mar 2014 13:33:33 -0300 Subject: [PATCH 3/3] make the callbacks optional on firebase simple login --- firebase/firebase-simplelogin-tests.ts | 10 +++++++++- firebase/firebase-simplelogin.d.ts | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/firebase/firebase-simplelogin-tests.ts b/firebase/firebase-simplelogin-tests.ts index e6c834fcf..e0be13e48 100644 --- a/firebase/firebase-simplelogin-tests.ts +++ b/firebase/firebase-simplelogin-tests.ts @@ -59,20 +59,28 @@ auth.createUser(email, password, function(error, user) { } }); +auth.createUser(email, password); + auth.changePassword(email, oldPassword, newPassword, function(error, success) { if (!error) { console.log('Password changed successfully'); } }); +auth.changePassword(email, oldPassword, newPassword); + auth.sendPasswordResetEmail(email, function(error, success) { if (!error) { console.log('Password reset email sent successfully'); } }); +auth.sendPasswordResetEmail(email); + auth.removeUser(email, password, function(error, success) { if (!error) { console.log('User deleted successfully'); } -}); \ No newline at end of file +}); + +auth.removeUser(email, password); \ No newline at end of file diff --git a/firebase/firebase-simplelogin.d.ts b/firebase/firebase-simplelogin.d.ts index 7e30e9ad1..817ec934a 100644 --- a/firebase/firebase-simplelogin.d.ts +++ b/firebase/firebase-simplelogin.d.ts @@ -86,9 +86,9 @@ declare class FirebaseSimpleLogin { callback?: (err: IFirebaseSimpleLoginError, success: boolean) => any): void; sendPasswordResetEmail(email: string, - callback: (err: IFirebaseSimpleLoginError, success: boolean) => any): void; + callback?: (err: IFirebaseSimpleLoginError, success: boolean) => any): void; removeUser(email: string, password: string, - callback: (err: IFirebaseSimpleLoginError, success: boolean) => any): void; + callback?: (err: IFirebaseSimpleLoginError, success: boolean) => any): void; } \ No newline at end of file