11import { list } from '@keystone-6/core' ;
2- import { allowAll } from '@keystone-6/core/access' ;
2+ import { allowAll , denyAll } from '@keystone-6/core/access' ;
33import { text , checkbox , password } from '@keystone-6/core/fields' ;
44import type { Lists } from '.keystone/types' ;
55
@@ -14,17 +14,11 @@ type Session = {
1414 } ;
1515} ;
1616
17- function hasSession ( { session } : { session : Session | undefined } ) {
17+ function hasSession ( { session } : { session ? : Session } ) {
1818 return Boolean ( session ) ;
1919}
2020
21- function isAdminOrSameUser ( {
22- session,
23- item,
24- } : {
25- session : Session | undefined ;
26- item : Lists . User . Item ;
27- } ) {
21+ function isAdminOrSameUser ( { session, item } : { session ?: Session ; item : Lists . User . Item } ) {
2822 // you need to have a session to do this
2923 if ( ! session ) return false ;
3024
@@ -35,7 +29,7 @@ function isAdminOrSameUser({
3529 return session . itemId === item . id ;
3630}
3731
38- function isAdminOrSameUserFilter ( { session } : { session : Session | undefined } ) {
32+ function isAdminOrSameUserFilter ( { session } : { session ? : Session } ) {
3933 // you need to have a session to do this
4034 if ( ! session ) return false ;
4135
@@ -50,7 +44,7 @@ function isAdminOrSameUserFilter({ session }: { session: Session | undefined })
5044 } ;
5145}
5246
53- function isAdmin ( { session } : { session : Session | undefined } ) {
47+ function isAdmin ( { session } : { session ? : Session } ) {
5448 // you need to have a session to do this
5549 if ( ! session ) return false ;
5650
@@ -89,18 +83,16 @@ export const lists: Lists = {
8983 hideDelete : args => ! isAdmin ( args ) ,
9084 listView : {
9185 // the default columns that will be displayed in the list view
92- initialColumns : [ 'name' , 'email' , ' isAdmin'] ,
86+ initialColumns : [ 'name' , 'isAdmin' ] ,
9387 } ,
9488 } ,
9589 fields : {
96- // the user's name, publicly visible
97- name : text ( { validation : { isRequired : true } } ) ,
98-
99- // the user's email address, used as the identity field for authentication
90+ // the user's name, used as the identity field for authentication
10091 // should not be publicly visible
10192 //
102- // we use isIndexed to enforce this email is unique
103- email : text ( {
93+ // we use isIndexed to enforce names are unique
94+ // that may not suitable for your application
95+ name : text ( {
10496 access : {
10597 // only the respective user, or an admin can read this field
10698 read : isAdminOrSameUser ,
@@ -120,17 +112,19 @@ export const lists: Lists = {
120112 // should not be publicly visible
121113 password : password ( {
122114 access : {
123- read : isAdminOrSameUser , // TODO: is this required?
115+ read : denyAll , // TODO: is this required?
124116 update : isAdminOrSameUser ,
125117 } ,
118+ validation : {
119+ isRequired : true ,
120+ } ,
126121 ui : {
127122 itemView : {
128123 // don't show this field if it isn't relevant
129124 fieldMode : args => ( isAdminOrSameUser ( args ) ? 'edit' : 'hidden' ) ,
130125 } ,
131126 listView : {
132- // TODO: ?
133- fieldMode : args => ( isAdmin ( args ) ? 'read' : 'hidden' ) ,
127+ fieldMode : 'hidden' , // TODO: is this required?
134128 } ,
135129 } ,
136130 } ) ,
0 commit comments