|
|
@ -17,7 +17,7 @@ export class Auth { |
|
|
this.giteaClientSecret = giteaClientSecret |
|
|
this.giteaClientSecret = giteaClientSecret |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
async redirect(event) { |
|
|
redirectUrl(state) { |
|
|
const url = new URL( |
|
|
const url = new URL( |
|
|
this.giteaWebBaseUrl + '/login/oauth/authorize' |
|
|
this.giteaWebBaseUrl + '/login/oauth/authorize' |
|
|
) |
|
|
) |
|
|
@ -28,14 +28,23 @@ export class Auth { |
|
|
'redirect_uri', |
|
|
'redirect_uri', |
|
|
this.remoteBaseUrl + '/auth/callback' |
|
|
this.remoteBaseUrl + '/auth/callback' |
|
|
) |
|
|
) |
|
|
|
|
|
search.set('state', state) |
|
|
|
|
|
url.search = search.toString() |
|
|
|
|
|
return url.toString() |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
buildState() { |
|
|
const timestamp = new Date().valueOf() |
|
|
const timestamp = new Date().valueOf() |
|
|
const randomInt = Math.floor(Math.random() * 10000) |
|
|
const randomInt = Math.floor(Math.random() * 10000) |
|
|
// TODO: sign
|
|
|
// TODO: sign
|
|
|
const state = `${randomInt}-${timestamp}` |
|
|
return `${randomInt}-${timestamp}` |
|
|
search.set('state', state) |
|
|
} |
|
|
url.search = search.toString() |
|
|
|
|
|
|
|
|
async redirect(event) { |
|
|
|
|
|
const state = this.buildState() |
|
|
|
|
|
const url = this.redirectUrl(state) |
|
|
const headers = new Headers({ |
|
|
const headers = new Headers({ |
|
|
Location: url.toString() |
|
|
Location: url |
|
|
}) |
|
|
}) |
|
|
cookie.setCookie(headers, { |
|
|
cookie.setCookie(headers, { |
|
|
name: 'oauth.gitea.state', |
|
|
name: 'oauth.gitea.state', |
|
|
|