auth.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { HttpClient } from "@angular/common/http";
  2. import { Injectable } from "@angular/core";
  3. import { Storage } from "@ionic/storage";
  4. import firebase from "firebase";
  5. import { TwitterApiProvider } from "../twitter-api/twitter-api";
  6. import { PgpKeyServerProvider } from "../../providers/pgp-key-server/pgp-key-server";
  7. @Injectable()
  8. export class AuthProvider {
  9. authProvider: any;
  10. constructor(
  11. public http: HttpClient,
  12. private storage: Storage,
  13. private twitter: TwitterApiProvider,
  14. private openpgp: PgpKeyServerProvider
  15. ) {
  16. const config = {
  17. apiKey: "AIzaSyDRb5IVPCjdKld_5ubsGuP9tEPTRG0kgQ4",
  18. authDomain: "twitter-hosn.firebaseapp.com",
  19. databaseURL: "https://twitter-hosn.firebaseio.com",
  20. projectId: "twitter-hosn",
  21. storageBucket: "twitter-hosn.appspot.com",
  22. messagingSenderId: "502393136960",
  23. appId: "1:502393136960:web:886faa1155c38a37087ca5",
  24. measurementId: "G-XPXJQF3LWV"
  25. };
  26. firebase.initializeApp(config);
  27. this.authProvider = new firebase.auth.TwitterAuthProvider();
  28. this.authProvider.setCustomParameters({
  29. lang: "de"
  30. });
  31. }
  32. /**
  33. * Performs the login to Twitter
  34. */
  35. login() {
  36. return firebase
  37. .auth()
  38. .signInWithRedirect(this.authProvider)
  39. .then(() => firebase.auth().getRedirectResult())
  40. .then(this.setKeys)
  41. .then(() => this.twitter.initApi());
  42. }
  43. getCurrentUser(){
  44. return firebase.auth().currentUser;
  45. }
  46. /**
  47. * Logs the user out by deleting session data
  48. */
  49. logout() {
  50. this.storage.clear();
  51. this.openpgp.clearStoredKeys();
  52. firebase.auth().signOut().then(function() {
  53. // Sign-out successful.
  54. console.log("user signed out successful");
  55. }, function(error) {
  56. // An error happened.
  57. console.log("UNABLE TO sign user out:",error);
  58. });
  59. }
  60. /**
  61. * Checks if a user is currently logged in
  62. */
  63. async isLoggedIn() {
  64. let accessToken = await this.storage.get("accessTokenKey");
  65. let accessTokenKey = await this.storage.get("accessTokenSecret");
  66. console.log("userid is:",this.storage.get( "userId"));
  67. return accessToken && accessTokenKey;
  68. }
  69. /**
  70. * Saves acces token and user id to locale storage
  71. */
  72. setKeys = async result => {
  73. console.log("SETTING KEYS HERE NOW",result);
  74. await this.storage.set(
  75. "accessTokenKey",
  76. result["credential"]["accessToken"]
  77. );
  78. await this.storage.set("accessTokenSecret", result["credential"]["secret"]);
  79. await this.storage.set(
  80. "userId",
  81. result["additionalUserInfo"]["profile"]["id_str"]
  82. );
  83. };
  84. }