2026-01-25 05:44:33 +00:00
|
|
|
import { v4 as uuid } from 'uuid'
|
2026-03-22 16:54:44 -04:00
|
|
|
import { groups as groupsTable } from '../db/schema.js'
|
2026-01-25 05:44:33 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Groups model
|
|
|
|
|
*/
|
|
|
|
|
class Groups {
|
2026-03-22 16:54:44 -04:00
|
|
|
async init(ids) {
|
2026-01-25 05:44:33 +00:00
|
|
|
WIKI.logger.info('Inserting default groups...')
|
|
|
|
|
|
|
|
|
|
await WIKI.db.insert(groupsTable).values([
|
|
|
|
|
{
|
|
|
|
|
id: ids.groupAdminId,
|
|
|
|
|
name: 'Administrators',
|
|
|
|
|
permissions: ['manage:system'],
|
|
|
|
|
rules: [],
|
|
|
|
|
isSystem: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: ids.groupUserId,
|
|
|
|
|
name: 'Users',
|
|
|
|
|
permissions: ['read:pages', 'read:assets', 'read:comments'],
|
|
|
|
|
rules: [
|
|
|
|
|
{
|
|
|
|
|
id: uuid(),
|
|
|
|
|
name: 'Default Rule',
|
|
|
|
|
roles: ['read:pages', 'read:assets', 'read:comments'],
|
|
|
|
|
match: 'START',
|
|
|
|
|
mode: 'ALLOW',
|
|
|
|
|
path: '',
|
|
|
|
|
locales: [],
|
|
|
|
|
sites: []
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
isSystem: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: ids.groupGuestId,
|
|
|
|
|
name: 'Guests',
|
|
|
|
|
permissions: ['read:pages', 'read:assets', 'read:comments'],
|
|
|
|
|
rules: [
|
|
|
|
|
{
|
|
|
|
|
id: uuid(),
|
|
|
|
|
name: 'Default Rule',
|
|
|
|
|
roles: ['read:pages', 'read:assets', 'read:comments'],
|
|
|
|
|
match: 'START',
|
|
|
|
|
mode: 'DENY',
|
|
|
|
|
path: '',
|
|
|
|
|
locales: [],
|
|
|
|
|
sites: []
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
isSystem: true
|
|
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const groups = new Groups()
|