-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
622 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
'@keystone-next/example-next-auth': major | ||
--- | ||
|
||
Initial version of the `withAuth` example. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# @keystone-next/example-with-auth |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
import { config } from '@keystone-next/keystone/schema'; | ||
import { statelessSessions } from '@keystone-next/keystone/session'; | ||
import { createAuth } from '@keystone-next/auth'; | ||
import { lists } from './schema'; | ||
|
||
// createAuth configures signin functionality based on the config below. Note this only implements | ||
// authentication, i.e signing in as an item using identity and secret fields in a list. Session | ||
// management and access control are controlled independently in the main keystone config. | ||
const { withAuth } = createAuth({ | ||
// This is the list that contains items people can sign in as | ||
listKey: 'Person', | ||
// The identity field is typically a username or email address | ||
identityField: 'email', | ||
// The secret field must be a password type field | ||
secretField: 'password', | ||
|
||
// initFirstItem turns on the "First User" experience, which prompts you to create a new user | ||
// when there are no items in the list yet | ||
initFirstItem: { | ||
// These fields are collected in the "Create First User" form | ||
fields: ['name', 'email', 'password'], | ||
}, | ||
}); | ||
|
||
// Stateless sessions will store the listKey and itemId of the signed-in user in a cookie. | ||
// This session object will be made availble on the context object used in hooks, access-control, | ||
// resolvers, etc. | ||
const session = statelessSessions({ | ||
// The maxAge option controls how long session cookies are valid for before they expire | ||
maxAge: 60 * 60 * 24 * 30, // 30 days | ||
// The session secret is used to encrypt cookie data (should be an environment variable) | ||
secret: '-- EXAMPLE COOKIE SECRET; CHANGE ME --', | ||
}); | ||
|
||
// We wrap our config using the withAuth function. This will inject all | ||
// the extra config required to add support for authentication in our system. | ||
export default withAuth( | ||
config({ | ||
db: { | ||
provider: 'sqlite', | ||
url: process.env.DATABASE_URL || 'file:./keystone-example.db', | ||
}, | ||
lists, | ||
// We add our session configuration to the system here. | ||
session, | ||
}) | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{ | ||
"name": "@keystone-next/example-with-auth", | ||
"version": "0.0.0", | ||
"private": true, | ||
"license": "MIT", | ||
"scripts": { | ||
"dev": "keystone-next dev", | ||
"start": "keystone-next start", | ||
"build": "keystone-next build" | ||
}, | ||
"dependencies": { | ||
"@keystone-next/auth": "^23.0.0", | ||
"@keystone-next/fields": "^8.0.0", | ||
"@keystone-next/keystone": "^17.0.0" | ||
}, | ||
"devDependencies": { | ||
"typescript": "^4.2.4" | ||
}, | ||
"engines": { | ||
"node": ">=v12.13.1" | ||
}, | ||
"repository": "https://github.com/keystonejs/keystone/tree/master/examples/with-auth" | ||
} |
Oops, something went wrong.