initial roles data to gulpfile, and migration

indiachan-spamvector
Thomas Lynch 2 years ago
parent 00da66f95e
commit 8b4a793d5a
  1. 45
      gulpfile.js
  2. 50
      helpers/rolemanager.js
  3. 53
      migrations/0.4.0.js

@ -1,6 +1,8 @@
'use strict';
const config = require(__dirname+'/config.js')
, { Binary } = require('mongodb')
, Permission = require(__dirname+'/helpers/permission.js')
, Permissions = require(__dirname+'/helpers/permissions.js')
, { hcaptcha, google } = require(__dirname+'/configs/secrets.js')
, gulp = require('gulp')
@ -204,12 +206,47 @@ async function wipe() {
await Posts.db.createIndex({ 'board': 1, 'reports.0': 1 }, { 'partialFilterExpression': { 'reports.0': { '$exists': true } } })
await Posts.db.createIndex({ 'globalreports.0': 1 }, { 'partialFilterExpression': { 'globalreports.0': { '$exists': true } } })
//todo: insert roles to roles db
const ANON = new Permission()
ANON.setAll([
Permissions.USE_MARKDOWN_PINKTEXT, Permissions.USE_MARKDOWN_GREENTEXT, Permissions.USE_MARKDOWN_BOLD,
Permissions.USE_MARKDOWN_UNDERLINE, Permissions.USE_MARKDOWN_STRIKETHROUGH, Permissions.USE_MARKDOWN_TITLE,
Permissions.USE_MARKDOWN_ITALIC, Permissions.USE_MARKDOWN_SPOILER, Permissions.USE_MARKDOWN_MONO,
Permissions.USE_MARKDOWN_CODE, Permissions.USE_MARKDOWN_DETECTED, Permissions.USE_MARKDOWN_LINK,
Permissions.USE_MARKDOWN_DICE, Permissions.USE_MARKDOWN_FORTUNE, Permissions.CREATE_BOARD,
Permissions.CREATE_ACCOUNT
]);
const BOARD_STAFF = new Permission(ANON.base64)
BOARD_STAFF.setAll([
Permissions.MANAGE_BOARD_GENERAL, Permissions.MANAGE_BOARD_BANS, Permissions.MANAGE_BOARD_LOGS,
]);
const BOARD_OWNER = new Permission(BOARD_STAFF.base64)
BOARD_OWNER.setAll([
Permissions.MANAGE_BOARD_OWNER, Permissions.MANAGE_BOARD_STAFF, Permissions.MANAGE_BOARD_CUSTOMISATION,
Permissions.MANAGE_BOARD_SETTINGS,
]);
const GLOBAL_STAFF = new Permission(BOARD_OWNER.base64);
GLOBAL_STAFF.setAll([
Permissions.MANAGE_GLOBAL_GENERAL, Permissions.MANAGE_GLOBAL_BANS, Permissions.MANAGE_GLOBAL_LOGS, Permissions.MANAGE_GLOBAL_NEWS,
Permissions.MANAGE_GLOBAL_BOARDS, Permissions.MANAGE_GLOBAL_SETTINGS, Permissions.MANAGE_BOARD_OWNER, Permissions.BYPASS_FILTERS,
Permissions.BYPASS_BANS, Permissions.BYPASS_SPAMCHECK, Permissions.BYPASS_RATELIMITS,
]);
const ADMIN = new Permission(GLOBAL_STAFF.base64);
ADMIN.setAll([
Permissions.MANAGE_GLOBAL_ACCOUNTS, Permissions.MANAGE_GLOBAL_ROLES, Permissions.VIEW_RAW_IP,
]);
const ROOT = new Permission();
ROOT.setAll(Permission.allPermissions);
await Roles.db.insertMany([
{ name: 'ANON', permissions: Binary(ANON.array) },
{ name: 'BOARD_STAFF', permissions: Binary(BOARD_STAFF.array) },
{ name: 'BOARD_OWNER', permissions: Binary(BOARD_OWNER.array) },
{ name: 'GLOBAL_STAFF', permissions: Binary(GLOBAL_STAFF.array) },
{ name: 'ADMIN', permissions: Binary(ADMIN.array) },
{ name: 'ROOT', permissions: Binary(ROOT.array) },
]);
const randomPassword = randomBytes(20).toString('base64')
const rootPermission = new Permission();
rootPermissions.set(Permissions.ROOT);
await Accounts.insertOne('admin', 'admin', randomPassword, rootPermission);
await Accounts.insertOne('admin', 'admin', randomPassword, ROOT);
console.log('=====LOGIN DETAILS=====\nusername: admin\npassword:', randomPassword, '\n=======================');
await db.collection('version').replaceOne({

@ -37,53 +37,3 @@ module.exports = {
roleNameMap: {},
load,
};
//put in gulpfile/migration!!
//const ANON = new Permission()
//ANON.setAll([
// Permissions.USE_MARKDOWN_PINKTEXT, Permissions.USE_MARKDOWN_GREENTEXT, Permissions.USE_MARKDOWN_BOLD,
// Permissions.USE_MARKDOWN_UNDERLINE, Permissions.USE_MARKDOWN_STRIKETHROUGH, Permissions.USE_MARKDOWN_TITLE,
// Permissions.USE_MARKDOWN_ITALIC, Permissions.USE_MARKDOWN_SPOILER, Permissions.USE_MARKDOWN_MONO,
// Permissions.USE_MARKDOWN_CODE, Permissions.USE_MARKDOWN_DETECTED, Permissions.USE_MARKDOWN_LINK,
// Permissions.USE_MARKDOWN_DICE, Permissions.USE_MARKDOWN_FORTUNE, Permissions.CREATE_BOARD,
// Permissions.CREATE_ACCOUNT
//]);
//
//const BOARD_STAFF = new Permission(ANON.base64)
//BOARD_STAFF.setAll([
// Permissions.MANAGE_BOARD_GENERAL, Permissions.MANAGE_BOARD_BANS, Permissions.MANAGE_BOARD_LOGS,
//]);
//
//const BOARD_OWNER = new Permission(BOARD_STAFF.base64)
//BOARD_OWNER.setAll([
// Permissions.MANAGE_BOARD_OWNER, Permissions.MANAGE_BOARD_STAFF, Permissions.MANAGE_BOARD_CUSTOMISATION,
// Permissions.MANAGE_BOARD_SETTINGS,
//]);
//
//const GLOBAL_STAFF = new Permission(BOARD_OWNER.base64);
//GLOBAL_STAFF.setAll([
// Permissions.MANAGE_GLOBAL_GENERAL, Permissions.MANAGE_GLOBAL_BANS, Permissions.MANAGE_GLOBAL_LOGS, Permissions.MANAGE_GLOBAL_NEWS,
// Permissions.MANAGE_GLOBAL_BOARDS, Permissions.MANAGE_GLOBAL_SETTINGS, Permissions.MANAGE_BOARD_OWNER, Permissions.BYPASS_FILTERS,
// Permissions.BYPASS_BANS, Permissions.BYPASS_SPAMCHECK, Permissions.BYPASS_RATELIMITS,
//]);
//
//const ADMIN = new Permission(GLOBAL_STAFF.base64);
//ADMIN.setAll([
// Permissions.MANAGE_GLOBAL_ACCOUNTS, Permissions.MANAGE_GLOBAL_ROLES, Permissions.VIEW_RAW_IP,
//]);
//
//const ROOT = new Permission();
//ROOT.setAll(Permission.allPermissions);
//
// if (roles.length === 0) {
// await Roles.db.insertMany([
// { name: 'ANON', permission: Binary(ANON.array) },
// { name: 'BOARD_STAFF', permission: Binary(BOARD_STAFF.array) },
// { name: 'BOARD_OWNER', permission: Binary(BOARD_OWNER.array) },
// { name: 'GLOBAL_STAFF', permission: Binary(GLOBAL_STAFF.array) },
// { name: 'ADMIN', permission: Binary(ADMIN.array) },
// { name: 'ROOT', permission: Binary(ROOT.array) },
// ]);
// console.log((await Roles.find()))
// }

@ -1,27 +1,66 @@
'use strict';
const roleManager = require(__dirname+'/../helpers/rolemanager.js')
, Permission = require(__dirname+'/../helpers/permission.js')
const Permission = require(__dirname+'/../helpers/permission.js')
, { Binary } = require('mongodb');
module.exports = async(db, redis) => {
console.log('making db changes for permissions update');
console.log('setting new permission templates to replace old permission "levels"');
const ANON = new Permission()
ANON.setAll([
Permissions.USE_MARKDOWN_PINKTEXT, Permissions.USE_MARKDOWN_GREENTEXT, Permissions.USE_MARKDOWN_BOLD,
Permissions.USE_MARKDOWN_UNDERLINE, Permissions.USE_MARKDOWN_STRIKETHROUGH, Permissions.USE_MARKDOWN_TITLE,
Permissions.USE_MARKDOWN_ITALIC, Permissions.USE_MARKDOWN_SPOILER, Permissions.USE_MARKDOWN_MONO,
Permissions.USE_MARKDOWN_CODE, Permissions.USE_MARKDOWN_DETECTED, Permissions.USE_MARKDOWN_LINK,
Permissions.USE_MARKDOWN_DICE, Permissions.USE_MARKDOWN_FORTUNE, Permissions.CREATE_BOARD,
Permissions.CREATE_ACCOUNT
]);
const BOARD_STAFF = new Permission(ANON.base64)
BOARD_STAFF.setAll([
Permissions.MANAGE_BOARD_GENERAL, Permissions.MANAGE_BOARD_BANS, Permissions.MANAGE_BOARD_LOGS,
]);
const BOARD_OWNER = new Permission(BOARD_STAFF.base64)
BOARD_OWNER.setAll([
Permissions.MANAGE_BOARD_OWNER, Permissions.MANAGE_BOARD_STAFF, Permissions.MANAGE_BOARD_CUSTOMISATION,
Permissions.MANAGE_BOARD_SETTINGS,
]);
const GLOBAL_STAFF = new Permission(BOARD_OWNER.base64);
GLOBAL_STAFF.setAll([
Permissions.MANAGE_GLOBAL_GENERAL, Permissions.MANAGE_GLOBAL_BANS, Permissions.MANAGE_GLOBAL_LOGS, Permissions.MANAGE_GLOBAL_NEWS,
Permissions.MANAGE_GLOBAL_BOARDS, Permissions.MANAGE_GLOBAL_SETTINGS, Permissions.MANAGE_BOARD_OWNER, Permissions.BYPASS_FILTERS,
Permissions.BYPASS_BANS, Permissions.BYPASS_SPAMCHECK, Permissions.BYPASS_RATELIMITS,
]);
const ADMIN = new Permission(GLOBAL_STAFF.base64);
ADMIN.setAll([
Permissions.MANAGE_GLOBAL_ACCOUNTS, Permissions.MANAGE_GLOBAL_ROLES, Permissions.VIEW_RAW_IP,
]);
const ROOT = new Permission();
ROOT.setAll(Permission.allPermissions);
await db.collection('roles').deleteMany({});
await db.collection('roles').insertMany([
{ name: 'ANON', permissions: Binary(ANON.array) },
{ name: 'BOARD_STAFF', permissions: Binary(BOARD_STAFF.array) },
{ name: 'BOARD_OWNER', permissions: Binary(BOARD_OWNER.array) },
{ name: 'GLOBAL_STAFF', permissions: Binary(GLOBAL_STAFF.array) },
{ name: 'ADMIN', permissions: Binary(ADMIN.array) },
{ name: 'ROOT', permissions: Binary(ROOT.array) },
]);
await db.collection('accounts').updateMany({ authLevel: 0 }, {
'$set': {
'permissions': Binary(roleManager.roles.ROOT.array),
'permissions': Binary(ROOT.array),
},
});
await db.collection('accounts').updateMany({ authLevel: 1 }, {
'$set': {
'permissions': Binary(roleManager.roles.GLOBAL_STAFF.array),
'permissions': Binary(GLOBAL_STAFF.array),
},
});
//not doing 2 and 3 anymore, since they were a weird, ugly part of the old "levels" system.
//they can be added back manually by editing global perms if desired
await db.collection('accounts').updateMany({ authLevel: { $gte: 2 } }, { //gte2, to get 2, 3, and 4.
'$set': {
'permissions': Binary(roleManager.roles.ANON.array),
'permissions': Binary(ANON.array),
},
});
console.log('renaming account modBoards->staffBoards');
@ -51,14 +90,14 @@ module.exports = async(db, redis) => {
const bulkWrites = allBoards.map(board => {
const staffObject = board.settings.moderators.reduce((acc, mod) => {
acc[mod] = {
permissions: Binary(roleManager.roles.BOARD_STAFF.array),
permissions: Binary(BOARD_STAFF.array),
addedDate: new Date(),
};
return acc;
}, {});
//add add the BO to staff
staffObject[board.owner] = {
permissions: Binary(roleManager.roles.BOARD_OWNER.array),
permissions: Binary(BOARD_OWNER.array),
addedDate: new Date(),
}
return {

Loading…
Cancel
Save