forked from AkkomaGang/akkoma-fe
Re-activate registration, use oauth password flow to fetch token.
This commit is contained in:
parent
b6cd4ff32a
commit
4d9680e797
3 changed files with 41 additions and 5 deletions
|
@ -7,7 +7,10 @@
|
|||
<div class="panel-body">
|
||||
<form v-on:submit.prevent='oAuthLogin' class="login-form">
|
||||
<div class='form-group'>
|
||||
<button class="btn btn-default">Login with OAuth</button>
|
||||
<div class='login-bottom'>
|
||||
<div><router-link :to="{name: 'registration'}" v-if='registrationOpen' class='register'>{{$t('login.register')}}</router-link></div>
|
||||
<button :disabled="loggingIn" type='submit' class='btn btn-default'>{{$t('login.login')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import oauthApi from '../../services/new_api/oauth.js'
|
||||
|
||||
const registration = {
|
||||
data: () => ({
|
||||
user: {},
|
||||
|
@ -25,9 +27,22 @@ const registration = {
|
|||
this.$store.state.api.backendInteractor.register(this.user).then(
|
||||
(response) => {
|
||||
if (response.ok) {
|
||||
this.$store.dispatch('loginUser', this.user)
|
||||
this.$router.push('/main/all')
|
||||
this.registering = false
|
||||
const data = {
|
||||
oauth: this.$store.state.oauth,
|
||||
instance: this.$store.state.instance.server
|
||||
}
|
||||
oauthApi.getOrCreateApp(data).then((app) => {
|
||||
oauthApi.getTokenWithCredentials(
|
||||
{app,
|
||||
instance: data.instance,
|
||||
username: this.user.username,
|
||||
password: this.user.password})
|
||||
.then((result) => {
|
||||
this.$store.commit('setToken', result.access_token)
|
||||
this.$store.dispatch('loginUser', result.access_token)
|
||||
this.$router.push('/main/friends')
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.registering = false
|
||||
response.json().then((data) => {
|
||||
|
|
|
@ -40,6 +40,22 @@ const login = (args) => {
|
|||
})
|
||||
}
|
||||
|
||||
const getTokenWithCredentials = ({app, instance, username, password}) => {
|
||||
const url = `${instance}/oauth/token`
|
||||
const form = new window.FormData()
|
||||
|
||||
form.append('client_id', app.client_id)
|
||||
form.append('client_secret', app.client_secret)
|
||||
form.append('grant_type', 'password')
|
||||
form.append('username', username)
|
||||
form.append('password', password)
|
||||
|
||||
return window.fetch(url, {
|
||||
method: 'POST',
|
||||
body: form
|
||||
}).then((data) => data.json())
|
||||
}
|
||||
|
||||
const getToken = ({app, instance, code}) => {
|
||||
const url = `${instance}/oauth/token`
|
||||
const form = new window.FormData()
|
||||
|
@ -58,7 +74,9 @@ const getToken = ({app, instance, code}) => {
|
|||
|
||||
const oauth = {
|
||||
login,
|
||||
getToken
|
||||
getToken,
|
||||
getTokenWithCredentials,
|
||||
getOrCreateApp
|
||||
}
|
||||
|
||||
export default oauth
|
||||
|
|
Loading…
Reference in a new issue