diff --git a/src/components/login_form/login_form.vue b/src/components/login_form/login_form.vue
index aaaca777..db389716 100644
--- a/src/components/login_form/login_form.vue
+++ b/src/components/login_form/login_form.vue
@@ -7,7 +7,10 @@
diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js
index 8f59878d..cdcc33c9 100644
--- a/src/components/registration/registration.js
+++ b/src/components/registration/registration.js
@@ -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) => {
diff --git a/src/services/new_api/oauth.js b/src/services/new_api/oauth.js
index becee3d0..9e656507 100644
--- a/src/services/new_api/oauth.js
+++ b/src/services/new_api/oauth.js
@@ -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