1 import { Socket } from 'socket.io';
2 import { Permission, PermissionGuard, Player } from '../../shared/player';
3 import { ChatCommand } from './base';
4 import { givePlayerPermission } from '../admin';
5 import { findPlayerByUsername } from '../player';
6 import { broadcastMessage, Message } from '../../shared/message';
7 import { renderChatMessage } from './../views/chat';
9 async function handler(rawCommand: string, sender: Socket, player: Player) {
10 if(player.permissions.includes('admin')) {
11 const pieces = rawCommand.split(' ');
12 const username = pieces[1];
13 const permission = pieces[2];
15 if(PermissionGuard(permission)) {
16 const recipient = await findPlayerByUsername(username);
18 await givePlayerPermission(recipient.id, permission as Permission);
20 const message: Message = broadcastMessage('server', `Granted ${permission} to ${recipient.username}`);
21 sender.emit('chat', renderChatMessage(message));
24 const message: Message = broadcastMessage('server', `Cant find user [${username}]`);
25 sender.emit('chat', renderChatMessage(message));
31 export const setPermission = new ChatCommand('give-permission', new RegExp(/^give-permission (.*)+/), handler);