53 lines
1.2 KiB
Markdown
53 lines
1.2 KiB
Markdown
![]() |
---
|
||
|
title: Oauth
|
||
|
---
|
||
|
|
||
|
## Oauth initialisation
|
||
|
```
|
||
|
POST /oauth/init
|
||
|
{
|
||
|
'provider': 'github',
|
||
|
'language': 'fr'
|
||
|
}
|
||
|
```
|
||
|
On success:
|
||
|
```
|
||
|
200
|
||
|
{
|
||
|
'state': '5d5132041ad3f369443f1d7b'
|
||
|
}
|
||
|
```
|
||
|
On failure:
|
||
|
```
|
||
|
400
|
||
|
```
|
||
|
- This triggers an Oauth flow
|
||
|
- `provider` should be one of `google` or `github`
|
||
|
- `language` should be one of the [configured language codes](https://github.com/freesewing/backend/blob/develop/src/config/index.js#L32)
|
||
|
- The frontend will use the state value to initialize an Oauth session. We'll check the state value when we receive the Oauth callback at the backend
|
||
|
|
||
|
## Oauth callback
|
||
|
```
|
||
|
GET /oauth/callback/from/:provider
|
||
|
```
|
||
|
On success: Redirects to the frontend
|
||
|
|
||
|
This is part of the Oauth flow. It fetches the user info from the Oauth provider. If it can't match it with a user, it will create a user account. In other words, this will handle both log in and sign up.
|
||
|
|
||
|
The frontend redirect will contain a confirmation ID in the URL that we'll `POST` back in the next Oauth flow step.
|
||
|
|
||
|
## Oauth login
|
||
|
```
|
||
|
POST /oauth/login
|
||
|
{
|
||
|
'confirmation': '98e132041ad3f369443f1d3d'
|
||
|
}
|
||
|
```
|
||
|
On success: The account data On failure:
|
||
|
```
|
||
|
400
|
||
|
```
|
||
|
|
||
|
This is the last step of the Oauth process. It logs a user in.
|
||
|
|