|
2 | 2 | import axios from "axios"; |
3 | 3 | import Cookies from 'js-cookie'; |
4 | 4 |
|
5 | | -axios.defaults.withCredentials = true; |
| 5 | +axios.defaults.withCredentials = false; |
| 6 | + |
| 7 | +(async () => { |
| 8 | + if (window.location.href == Cookies.get('githubRedirectUrl')) { |
| 9 | + const cookies = await axios.get(Cookies.get("api_url")+ "/tokens"); |
| 10 | + const { access, refresh } = cookies.data; |
| 11 | + Cookies.set("jwt", access, { expires: 7 }); |
| 12 | + Cookies.set("refresh", refresh, { expires: 7 }); |
| 13 | + } |
| 14 | +})().catch(err => { |
| 15 | + console.error(err); |
| 16 | +}); |
| 17 | + |
| 18 | + |
6 | 19 | export default class Auth { |
7 | 20 | constructor(config) { |
8 | 21 | const { baseURL } = config; |
9 | 22 | this.baseURL = baseURL; |
10 | 23 | } |
11 | | - async login ({email, password}) { |
12 | | - const login = await axios.post(this.baseURL+"/signin", { |
13 | | - email: email, |
14 | | - password: password, |
15 | | - }) |
16 | | - const {ID, Token} = login.data; |
17 | | - Cookies.set("jwt", Token, { expires: 7 }); |
18 | | - Cookies.set("user_id", ID, { expires: 7 }); |
19 | | - return true; |
| 24 | + async login ({email, password, provider} = {}) { |
| 25 | + if (provider == "local") { |
| 26 | + const login = await axios.post(this.baseURL+"/signin", { |
| 27 | + email: email, |
| 28 | + password: password, |
| 29 | + }) |
| 30 | + const {jwt, refresh} = login.data; |
| 31 | + Cookies.set("jwt", jwt, { expires: 7 }); |
| 32 | + Cookies.set("refresh", refresh, { expires: 7 }); |
| 33 | + return true; |
| 34 | + } |
| 35 | + } |
| 36 | + async signIn ({email, password, provider} = {}) { |
| 37 | + switch (provider) { |
| 38 | + case "github": |
| 39 | + // first get the redirect URL |
| 40 | + // and provider URL |
| 41 | + console.log("getting github client test", this.baseURL); |
| 42 | + const client = await axios.get(this.baseURL+"/github/client") |
| 43 | + console.log("client: ", client) |
| 44 | + const {ProviderUrl, RedirectUrl} = client.data; |
| 45 | + // create a listener to update |
| 46 | + // cookies when redirectURL is reached |
| 47 | + Cookies.set("githubRedirectUrl", RedirectUrl); |
| 48 | + Cookies.set("api_url", this.baseURL); |
| 49 | + return {success: true, redirectUrl: RedirectUrl, providerUrl: ProviderUrl} |
| 50 | + default: |
| 51 | + const login = await axios.post(this.baseURL+"/signin", { |
| 52 | + email: email, |
| 53 | + password: password, |
| 54 | + }) |
| 55 | + const {jwt, refresh} = login.data; |
| 56 | + Cookies.set("jwt", jwt, { expires: 7 }); |
| 57 | + Cookies.set("refresh", refresh, { expires: 7 }); |
| 58 | + return {success: true}; |
| 59 | + } |
20 | 60 | } |
21 | 61 | logout () { |
22 | 62 | Cookies.remove("jwt"); |
| 63 | + Cookies.remove("refresh"); |
23 | 64 | } |
24 | 65 | async register ({email, password}) { |
25 | 66 | const signup = await axios.post(this.baseURL+"/signup", { |
26 | 67 | email: email, |
27 | 68 | password: password, |
28 | 69 | }) |
29 | | - const {ID, Token} = signup.data; |
30 | | - Cookies.set("jwt", Token, { expires: 7 }); |
31 | | - Cookies.set("user_id", ID, { expires: 7 }); |
| 70 | + const {jwt, refresh} = signup.data; |
| 71 | + Cookies.set("jwt", jwt, { expires: 7 }); |
| 72 | + Cookies.set("refresh", refresh, { expires: 7 }); |
32 | 73 | return true; |
33 | 74 | } |
| 75 | + async refresh() { |
| 76 | + const refreshResp = await axios.post(this.baseURL+"/refresh-token", { |
| 77 | + access: Cookies.get("jwt"), |
| 78 | + refresh: Cookies.get("refresh"), |
| 79 | + }) |
| 80 | + const {jwt, refresh} = refreshResp; |
| 81 | + Cookies.set("jwt", jwt, { expires: 7 }); |
| 82 | + Cookies.set("refresh", refresh, { expires: 7 }); |
| 83 | + return true; |
| 84 | + } |
| 85 | + async setUser() { |
| 86 | + const cookies = await axios.get(this.baseURL + "/tokens"); |
| 87 | + const { jwt, refreshToken } = cookies.data; |
| 88 | + Cookies.set("jwt", jwt, { expires: 7 }); |
| 89 | + Cookies.set("refresh", refreshToken, { expires: 7 }); |
| 90 | + } |
34 | 91 | getJWTToken () { |
35 | 92 | return Cookies.get("jwt"); |
36 | 93 | } |
|
0 commit comments