We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent b4a953f commit 4d7a5f6Copy full SHA for 4d7a5f6
.env.example
@@ -23,11 +23,6 @@ DATABASE_URL="postgresql://splitpro:password@localhost:54321/splitpro"
23
NEXTAUTH_SECRET="secret"
24
NEXTAUTH_URL="http://localhost:3000"
25
26
-# Auth providers
27
-# Specify them separated by commas
28
-# Available providers : GOOGLE,EMAIL
29
-AUTH_PROVIDERS=GOOGLE,EMAIL
30
-
31
# Enable sending invites
32
ENABLE_SENDING_INVITES=false
33
#********* END OF REQUIRED ENV VARS *********
@@ -45,6 +40,12 @@ EMAIL_SERVER_PASSWORD=
45
40
GOOGLE_CLIENT_ID=
46
41
GOOGLE_CLIENT_SECRET=
47
42
43
+# Authentic Providder : https://next-auth.js.org/providers/authentik
44
+# Issuer: should include the slug without a trailing slash – e.g., https://my-authentik-domain.com/application/o/splitpro
+AUTHENTIK_ID=
+AUTHENTIK_SECRET=
+AUTHENTIK_ISSUER=
48
+
49
# Storage: any S3 compatible storage will work, for self hosting can use minio
50
# If you're using minio for dev, you can generate access keys from the console http://localhost:9001/access-keys/new-account
51
# R2_ACCESS_KEY="access-key"
docker/prod/compose.yml
@@ -30,7 +30,6 @@ services:
- DATABASE_URL=${DATABASE_URL:?err}
- NEXTAUTH_URL=${NEXTAUTH_URL:?err}
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET:?err}
- - AUTH_PROVIDERS=${AUTH_PROVIDERS:?err}
34
- ENABLE_SENDING_INVITES=${ENABLE_SENDING_INVITES:?err}
35
- FROM_EMAIL=${FROM_EMAIL}
36
- EMAIL_SERVER_HOST=${EMAIL_SERVER_HOST}
@@ -39,6 +38,9 @@ services:
39
38
- EMAIL_SERVER_PASSWORD=${EMAIL_SERVER_PASSWORD}
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
+ - AUTHENTIK_ID=${AUTHENTIK_ID}
+ - AUTHENTIK_SECRET=${AUTHENTIK_SECRET}
+ - AUTHENTIK_ISSUER=${AUTHENTIK_ISSUER}
- R2_ACCESS_KEY=${R2_ACCESS_KEY}
- R2_SECRET_KEY=${R2_SECRET_KEY}
- R2_BUCKET=${R2_BUCKET}
src/env.js
@@ -31,6 +31,9 @@ export const env = createEnv({
EMAIL_SERVER_PASSWORD: z.string().optional(),
GOOGLE_CLIENT_ID: z.string().optional(),
GOOGLE_CLIENT_SECRET: z.string().optional(),
+ AUTHENTIK_ID: z.string().optional(),
+ AUTHENTIK_SECRET: z.string().optional(),
+ AUTHENTIK_ISSUER: z.string().optional(),
37
R2_ACCESS_KEY: z.string().optional(),
R2_SECRET_KEY: z.string().optional(),
R2_BUCKET: z.string().optional(),
@@ -69,6 +72,9 @@ export const env = createEnv({
69
72
EMAIL_SERVER_PASSWORD: process.env.EMAIL_SERVER_PASSWORD,
70
73
GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
71
74
GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
75
+ AUTHENTIK_ID: process.env.AUTHENTIK_ID,
76
+ AUTHENTIK_SECRET: process.env.AUTHENTIK_SECRET,
77
+ AUTHENTIK_ISSUER: process.env.AUTHENTIK_ISSUER,
78
R2_ACCESS_KEY: process.env.R2_ACCESS_KEY,
79
R2_SECRET_KEY: process.env.R2_SECRET_KEY,
80
R2_BUCKET: process.env.R2_BUCKET,
src/server/auth.ts
@@ -4,6 +4,7 @@ import { getServerSession, type DefaultSession, type NextAuthOptions } from 'nex
4
import DiscordProvider from 'next-auth/providers/discord';
5
import GoogleProvider from 'next-auth/providers/google';
6
import EmailProvider from 'next-auth/providers/email';
7
+import AuthentikProvider from 'next-auth/providers/authentik';
8
9
import { env } from '~/env';
10
import { db } from '~/server/db';
@@ -144,6 +145,17 @@ function getProviders() {
144
145
);
146
}
147
148
+ if (env.AUTHENTIK_ID && env.AUTHENTIK_SECRET && env.AUTHENTIK_ISSUER) {
149
+ providersList.push(
150
+ AuthentikProvider({
151
+ clientId: env.AUTHENTIK_ID,
152
+ clientSecret: env.AUTHENTIK_SECRET,
153
+ issuer: env.AUTHENTIK_ISSUER,
154
+ allowDangerousEmailAccountLinking: true,
155
+ })
156
+ );
157
+ }
158
159
return providersList;
160
161
0 commit comments