Blame view

src/auth/index.js 6.04 KB
8a0dd59d9   Digvijay Singh   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  import Vue from "vue";
  import createAuth0Client from "@auth0/auth0-spa-js";
  import router from '../router'
  import axios from 'axios'
  /** Define a default action to perform after authentication */
  const DEFAULT_REDIRECT_CALLBACK = () =>
      window.history.replaceState({}, document.title, window.location.pathname);
  
  let instance;
  
  /** Returns the current instance of the SDK */
  export const getInstance = () => instance;
  
  /** Creates an instance of the Auth0 SDK. If one has already been created, it returns that instance */
  export const useAuth0 = ({
      onRedirectCallback = DEFAULT_REDIRECT_CALLBACK,
      redirectUri = window.location.origin + '/intermediate',
      ...options
  }) => {
      if (instance) return instance;
  
      // The 'instance' is simply a Vue object
      instance = new Vue({
          data() {
              return {
                  loading: true,
                  isAuthenticated: false,
                  user: {},
                  auth0Client: null,
                  auth0Client1: null,
                  popupOpen: false,
                  error: null
              };
          },
          methods: {
              /** Authenticates the user using a popup window */
              async loginWithPopup(o) {
                  this.popupOpen = true;
  
                  try {
                      await this.auth0Client.loginWithPopup(o);
                  } catch (e) {
                      // eslint-disable-next-line
                      console.error(e);
                  } finally {
                      this.popupOpen = false;
                  }
  
                  this.user = await this.auth0Client.getUser();
                  this.isAuthenticated = true;
              },
              /** Handles the callback when logging in using a redirect */
              async handleRedirectCallback() {
                  this.loading = true;
                  try {
                      await this.auth0Client.handleRedirectCallback();
                      this.user = await this.auth0Client.getUser();
                      this.isAuthenticated = true;
                  } catch (e) {
                      this.error = e;
                  } finally {
                      this.loading = false;
                  }
              },
              /** Authenticates the user using the redirect method */
              loginWithRedirect(o) {
                  return this.auth0Client.loginWithRedirect(o);
              },
              /** Authenticates the user using the redirect method */
              loginWithRedirectSignup(o) {
                  return this.auth0Client1.loginWithRedirect(o);
              },
              /** Returns all the claims present in the ID token */
              getIdTokenClaims(o) {
                  return this.auth0Client.getIdTokenClaims(o);
              },
              /** Returns the access token. If the token is invalid or missing, a new one is retrieved */
              getTokenSilently(o) {
                  return this.auth0Client.getTokenSilently(o);
              },
              /** Gets the access token using a popup window */
  
              getTokenWithPopup(o) {
                  return this.auth0Client.getTokenWithPopup(o);
              },
              /** Logs the user out and removes their session on the authorization server */
              logout(o) {
                  return this.auth0Client.logout(o);
              }
          },
          /** Use this lifecycle method to instantiate the SDK client */
          async created() {
              // Create a new instance of the SDK client using members of the given options object
              this.auth0Client = await createAuth0Client({
                  domain: options.domain,
                  client_id: options.clientId,
                  audience: options.audience,
                  redirect_uri: redirectUri
              });
  
              this.auth0Client1 = await createAuth0Client({
                  domain: options.domain,
                  client_id: options.clientId,
                  audience: options.audience,
                  redirect_uri: redirectUri,
                  signup: 'yes'
              });
  
              try {
                  // If the user is returning to the app after authentication..
                  if (
                      window.location.search.includes("code=") &&
                      window.location.search.includes("state=")
                  ) {
                      // handle the redirect and retrieve tokens
                      const { appState } = await this.auth0Client.handleRedirectCallback();
                      const u = await this.auth0Client.getUser();
298fff252   Digvijay Singh   new design added
118
119
120
                      console.log("u",u)
                      axios.post('/profile', {
                          name: u.name,
8a0dd59d9   Digvijay Singh   first commit
121
                          email: u.email,
5684145ce   Digvijay Singh   reset password,ot...
122
123
124
                          firstName: u.given_name,
                          lastName: u.family_name,
                          verified: true
298fff252   Digvijay Singh   new design added
125
                          // profileImage: u.picture
8a0dd59d9   Digvijay Singh   first commit
126
                      }).then(res => {
298fff252   Digvijay Singh   new design added
127
                          console.log("res",res);
4234f1fc0   Digvijay Singh   profile module added
128
                          this.$toaster.success(res.data.message);
298fff252   Digvijay Singh   new design added
129
                          localStorage.setItem('spotlight_usertoken', JSON.stringify(res.data.data))
8a0dd59d9   Digvijay Singh   first commit
130
                          console.log("onboarding", res)
298fff252   Digvijay Singh   new design added
131
132
                          router.push({ name: 'Profile' })
                         
8a0dd59d9   Digvijay Singh   first commit
133
134
135
                      }).catch(err => {
                          console.log(err)
                      })
5684145ce   Digvijay Singh   reset password,ot...
136

8a0dd59d9   Digvijay Singh   first commit
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
                      // Notify subscribers that the redirect callback has happened, passing the appState
                      // (useful for retrieving any pre-authentication state)
                      onRedirectCallback(appState);
                  }
              } catch (e) {
                  this.error = e;
              } finally {
                  // Initialize our internal authentication state
                  this.isAuthenticated = await this.auth0Client.isAuthenticated();
                  this.user = await this.auth0Client.getUser();
                  this.loading = false;
              }
          }
      });
  
      return instance;
  };
  
  // Create a simple Vue plugin to expose the wrapper object throughout the application
  export const Auth0Plugin = {
      install(Vue, options) {
          Vue.prototype.$auth = useAuth0(options);
      }
  };