Home Reference Source Repository

src/permissions.js

'use babel';
'use strict';

import bot from '../';
import config from './config';
import ModRole from './database/mod-role';

export function isMod(server, user) {
	[server, user] = resolve(server, user);
	if(user.id === config.owner) return true;
	const userRoles = server.rolesOfUser(user);
	if(userRoles.some(role => role.hasPermission('administrator'))) return true;
	if(!ModRole.serverHasAny(server)) return userRoles.some(role => role.hasPermission('manageMessages'));
	return ModRole.findInServer(server).some(element => userRoles.some(element2 => element.id === element2.id));
}

export function isAdmin(server, user) {
	[server, user] = resolve(server, user);
	if(user.id === config.owner) return true;
	return server.rolesOfUser(user).some(role => role.hasPermission('administrator'));
}

function resolve(server, user) {
	if(!server || !user) throw new Error('A server and a user must be specified.');
	if(typeof server === 'string') server = bot.client.servers.get('id', server);
	if(!server || !server.id) throw new Error('Unable to identify server.');
	if(typeof user === 'string') user = server.members.get('id', user);
	if(!user || !user.id) throw new Error('Unable to identify user.');
	return [server, user];
}