Skip to content

Commit

Permalink
feat: login with provider.
Browse files Browse the repository at this point in the history
  • Loading branch information
codiam committed Apr 27, 2023
1 parent 570fbdf commit 50370f7
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
8 changes: 7 additions & 1 deletion playground/app.vue
Expand Up @@ -4,6 +4,12 @@
<button style="margin-top: 25px" @click="onSubmit">
Login with Directus
</button>
<button style="margin-top: 25px" @click="loginWithProvider('discord')">
Login with OAuth
</button>
<button style="margin-top: 25px" @click="logout">
Logout
</button>
<button style="margin-top: 25px" @click="fetchSingleArticle">
Fetch Single Article
</button>
Expand Down Expand Up @@ -47,7 +53,7 @@
<script setup lang="ts">
import { DirectusUserRequest, DirectusUserUpdate } from '../src/runtime/types'
const { login } = useDirectusAuth()
const { login, loginWithProvider, logout } = useDirectusAuth()
const user = useDirectusUser()
const { getItems, getItemById, createItems, deleteItems } = useDirectusItems()
const { getCollections } = useDirectusCollections()
Expand Down
8 changes: 8 additions & 0 deletions src/module.ts
Expand Up @@ -52,6 +52,12 @@ export interface ModuleOptions {
* @default 'directus_refresh_token'
*/
cookieNameRefreshToken?: string;

/**
* Where to redirect after logging in with an OAuth Provider.
* @type string
*/
redirectOnLogin?: string;
}

export default defineNuxtModule<ModuleOptions>({
Expand Down Expand Up @@ -81,6 +87,7 @@ export default defineNuxtModule<ModuleOptions>({
autoFetch: options.autoFetch,
autoRefresh: options.autoRefresh,
fetchUserParams: options.fetchUserParams,
redirectOnLogin: options.redirectOnLogin,
token: options.token,
devtools: options.devtools,
cookieNameToken: options.cookieNameToken,
Expand All @@ -96,6 +103,7 @@ export default defineNuxtModule<ModuleOptions>({
autoFetch: options.autoFetch,
autoRefresh: options.autoRefresh,
fetchUserParams: options.fetchUserParams,
redirectOnLogin: options.redirectOnLogin,
token: options.token,
devtools: options.devtools,
cookieNameToken: options.cookieNameToken,
Expand Down
12 changes: 11 additions & 1 deletion src/runtime/composables/useDirectusAuth.ts
Expand Up @@ -17,6 +17,7 @@ export const useDirectusAuth = () => {
const directus = useDirectus()
const baseUrl = useDirectusUrl()
const user = useDirectusUser()
const route = useRoute();
const { token, refreshToken, expires } = useDirectusToken()

const setAuthCookies = (_token: string, _refreshToken: string, _expires: number) => {
Expand Down Expand Up @@ -89,6 +90,14 @@ export const useDirectusAuth = () => {
}
}

const loginWithProvider = async (
provider: string,
) => {
removeTokens()
const redirect = `${window.location.origin}${config.public.directus.redirectOnLogin ?? route.fullPath}`;
await navigateTo(`${baseUrl}/auth/login/${provider}?redirect=${encodeURIComponent(redirect)}`, { external: true })
}

const createUser = async (
data: DirectusRegisterCredentials,
useStaticToken?: boolean
Expand Down Expand Up @@ -148,6 +157,7 @@ export const useDirectusAuth = () => {
resetPassword,
logout,
createUser,
register
register,
loginWithProvider
}
}

0 comments on commit 50370f7

Please sign in to comment.