gamelet-cli
Version:
Download project from code.gamelet.com, edit/test in vscode and sync back to server.
127 lines • 9.44 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.userManager = exports.UserManager = void 0;
const net_1 = require("../../utils/net");
const IntUtil_1 = require("../utils/IntUtil");
const StringUtil_1 = require("../utils/StringUtil");
const PlayerManager_1 = require("./PlayerManager");
const jwt = __importStar(require("jsonwebtoken"));
class UserManager {
constructor() {
this.users = [];
this.userIconColors = [
'blue',
'green',
'orange',
'pink',
'red',
'yellow',
];
this.users.push({
username: 'LocalServerMonitor',
nickname: 'Monitor',
token: 'localServerMonitor',
admin: true,
iconUrl: 'https://gamelet.online/img/default_usericon_red.png',
ip: '1.1.1.1',
});
}
getByToken(toiken) {
return this.users.find(u => u.token == toiken);
}
getByUsername(username) {
return this.users.find(u => u.username == username);
}
listByUsernames(usernames) {
return this.users.filter(u => usernames.includes(u.username));
}
login(clientCode, guest) {
let onlineUsernames = PlayerManager_1.playerManager.listPlayers().map(player => player.user.username);
let user = this.users.find(u => !onlineUsernames.includes(u.username) && !u.guest == !guest && !u.admin);
if (!user) {
let userIndex = this.users.length + 1;
let username = `DevUser_${userIndex}@devserver`;
let userColor = this.userIconColors[userIndex % this.userIconColors.length];
user = {
username: username,
nickname: `User ${userIndex}`,
iconUrl: `https://gamelet.online/img/default_usericon_${userColor}.png`,
token: `${username}|${clientCode}|Dev` + StringUtil_1.StringUtil.generateRandomString(3),
ip: [192, 168, IntUtil_1.IntUtil.randInt(100, 200), IntUtil_1.IntUtil.randInt(100, 200)].join('.'),
guest: !!guest,
};
this.users.push(user);
}
return user;
}
async loginPortal(clientCode, portal, token) {
try {
const login = loginPortal[portal];
const user = login && await login(clientCode, portal, token);
if (user) {
this.users.push(user);
return {
user,
time: (0, net_1.getServerTimestamp)(),
ip: user.ip,
token: user.token,
};
}
}
catch (err) {
console.error('[loginPortal error] ', err);
}
return null;
}
}
exports.UserManager = UserManager;
const loginPortal = {
crazygames: async (clientCode, portal, token) => {
const data = await (0, net_1.getUrlData)('https://sdk.crazygames.com/publicKey.json');
const key = data['publicKey'];
const payload = jwt.verify(token, key, { algorithms: ["RS256"] });
const username = payload['userId'] + '.local@' + portal;
return {
username: username,
nickname: payload['username'],
iconUrl: payload['profilePictureUrl'],
token: `${username}|${clientCode}|Dev` + StringUtil_1.StringUtil.generateRandomString(3),
ip: [192, 168, IntUtil_1.IntUtil.randInt(100, 200), IntUtil_1.IntUtil.randInt(100, 200)].join('.'),
};
}
};
exports.userManager = new UserManager();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlck1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmVyL21hbmFnZXJzL1VzZXJNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUFpRTtBQUNqRSw4Q0FBMkM7QUFDM0Msb0RBQWlEO0FBQ2pELG1EQUFnRDtBQUNoRCxrREFBb0M7QUFFcEMsTUFBYSxXQUFXO0lBYXBCO1FBWFEsVUFBSyxHQUFjLEVBQUUsQ0FBQztRQUV0QixtQkFBYyxHQUFhO1lBQy9CLE1BQU07WUFDTixPQUFPO1lBQ1AsUUFBUTtZQUNSLE1BQU07WUFDTixLQUFLO1lBQ0wsUUFBUTtTQUNYLENBQUM7UUFHRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNaLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsUUFBUSxFQUFFLFNBQVM7WUFDbkIsS0FBSyxFQUFFLG9CQUFvQjtZQUMzQixLQUFLLEVBQUUsSUFBSTtZQUNYLE9BQU8sRUFBRSxxREFBcUQ7WUFDOUQsRUFBRSxFQUFFLFNBQVM7U0FDaEIsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELFVBQVUsQ0FBQyxNQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsUUFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELGVBQWUsQ0FBQyxTQUFtQjtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMs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