mirror of
https://github.com/PretendoNetwork/account.git
synced 2026-05-09 04:31:26 -05:00
feat(grpc): implement getPNIDs
This commit is contained in:
parent
77feb81df0
commit
876a182e7b
120
src/services/grpc/account/v2/get-pnids.ts
Normal file
120
src/services/grpc/account/v2/get-pnids.ts
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
// import { Status, ServerError } from 'nice-grpc';
|
||||
import { getPNIDByPID } from '@/database';
|
||||
import { PNID_PERMISSION_FLAGS } from '@/types/common/permission-flags';
|
||||
import { config } from '@/config-manager';
|
||||
import { Device } from '@/models/device';
|
||||
import type { GetPNIDsRequest, GetPNIDsResponse } from '@pretendonetwork/grpc/account/v2/get_pnids_rpc';
|
||||
|
||||
export async function getPNIDs(request: GetPNIDsRequest): Promise<GetPNIDsResponse> {
|
||||
const response: GetPNIDsResponse = { userData: [] };
|
||||
for (const pid of request.pid) {
|
||||
const pnid = await getPNIDByPID(pid);
|
||||
if (!pnid) {
|
||||
response.userData[pid] = {
|
||||
deleted: true,
|
||||
pid: pid,
|
||||
username: 'Unknown',
|
||||
accessLevel: -1,
|
||||
serverAccessLevel: 'prod',
|
||||
mii: {
|
||||
name: 'Unknown',
|
||||
data: '',
|
||||
url: ''
|
||||
},
|
||||
creationDate: '',
|
||||
birthdate: '',
|
||||
gender: '',
|
||||
country: '',
|
||||
language: '',
|
||||
emailAddress: '',
|
||||
tierName: '',
|
||||
permissions: {
|
||||
bannedAllPermanently: false,
|
||||
bannedAllTemporarily: false,
|
||||
betaAccess: false,
|
||||
accessAdminPanel: false,
|
||||
createServerConfigs: false,
|
||||
modifyServerConfigs: false,
|
||||
deployServer: false,
|
||||
modifyPnids: false,
|
||||
modifyNexAccounts: false,
|
||||
modifyConsoles: false,
|
||||
banPnids: false,
|
||||
banNexAccounts: false,
|
||||
banConsoles: false,
|
||||
moderateMiiverse: false,
|
||||
createApiKeys: false,
|
||||
createBossTasks: false,
|
||||
updateBossTasks: false,
|
||||
deleteBossTasks: false,
|
||||
uploadBossFiles: false,
|
||||
updateBossFiles: false,
|
||||
deleteBossFiles: false,
|
||||
updatePnidPermissions: false
|
||||
},
|
||||
linkedDevices: []
|
||||
};
|
||||
continue;
|
||||
}
|
||||
|
||||
const devices = (await Device.find({
|
||||
linked_pids: pnid.pid
|
||||
})).map((device) => {
|
||||
return {
|
||||
model: device.get('model'), // ".model" gives the Mongoose model...
|
||||
serial: device.serial,
|
||||
linkedPids: device.linked_pids,
|
||||
accessLevel: device.access_level,
|
||||
serverAccessLevel: device.server_access_level,
|
||||
deviceId: device.device_id
|
||||
};
|
||||
});
|
||||
|
||||
response.userData[pid] = {
|
||||
deleted: pnid.deleted || pnid.marked_for_deletion,
|
||||
pid: pnid.pid,
|
||||
username: pnid.username,
|
||||
accessLevel: pnid.access_level,
|
||||
serverAccessLevel: pnid.server_access_level,
|
||||
mii: {
|
||||
name: pnid.mii.name,
|
||||
data: pnid.mii.data,
|
||||
url: `${config.cdn.base_url}/mii/${pnid.pid}/standard.tga`
|
||||
},
|
||||
creationDate: pnid.creation_date,
|
||||
birthdate: pnid.birthdate,
|
||||
gender: pnid.gender,
|
||||
country: pnid.country,
|
||||
language: pnid.language,
|
||||
emailAddress: pnid.email.address,
|
||||
tierName: pnid.connections.stripe.tier_name,
|
||||
permissions: {
|
||||
bannedAllPermanently: pnid.hasPermission(PNID_PERMISSION_FLAGS.BANNED_ALL_PERMANENTLY),
|
||||
bannedAllTemporarily: pnid.hasPermission(PNID_PERMISSION_FLAGS.BANNED_ALL_TEMPORARILY),
|
||||
betaAccess: pnid.hasPermission(PNID_PERMISSION_FLAGS.BETA_ACCESS),
|
||||
accessAdminPanel: pnid.hasPermission(PNID_PERMISSION_FLAGS.ACCESS_ADMIN_PANEL),
|
||||
createServerConfigs: pnid.hasPermission(PNID_PERMISSION_FLAGS.CREATE_SERVER_CONFIGS),
|
||||
modifyServerConfigs: pnid.hasPermission(PNID_PERMISSION_FLAGS.MODIFY_SERVER_CONFIGS),
|
||||
deployServer: pnid.hasPermission(PNID_PERMISSION_FLAGS.DEPLOY_SERVER),
|
||||
modifyPnids: pnid.hasPermission(PNID_PERMISSION_FLAGS.MODIFY_PNIDS),
|
||||
modifyNexAccounts: pnid.hasPermission(PNID_PERMISSION_FLAGS.MODIFY_NEX_ACCOUNTS),
|
||||
modifyConsoles: pnid.hasPermission(PNID_PERMISSION_FLAGS.MODIFY_CONSOLES),
|
||||
banPnids: pnid.hasPermission(PNID_PERMISSION_FLAGS.BAN_PNIDS),
|
||||
banNexAccounts: pnid.hasPermission(PNID_PERMISSION_FLAGS.BAN_NEX_ACCOUNTS),
|
||||
banConsoles: pnid.hasPermission(PNID_PERMISSION_FLAGS.BAN_CONSOLES),
|
||||
moderateMiiverse: pnid.hasPermission(PNID_PERMISSION_FLAGS.MODERATE_MIIVERSE),
|
||||
createApiKeys: pnid.hasPermission(PNID_PERMISSION_FLAGS.CREATE_API_KEYS),
|
||||
createBossTasks: pnid.hasPermission(PNID_PERMISSION_FLAGS.CREATE_BOSS_TASKS),
|
||||
updateBossTasks: pnid.hasPermission(PNID_PERMISSION_FLAGS.UPDATE_BOSS_TASKS),
|
||||
deleteBossTasks: pnid.hasPermission(PNID_PERMISSION_FLAGS.DELETE_BOSS_TASKS),
|
||||
uploadBossFiles: pnid.hasPermission(PNID_PERMISSION_FLAGS.UPLOAD_BOSS_FILES),
|
||||
updateBossFiles: pnid.hasPermission(PNID_PERMISSION_FLAGS.UPDATE_BOSS_FILES),
|
||||
deleteBossFiles: pnid.hasPermission(PNID_PERMISSION_FLAGS.DELETE_BOSS_FILES),
|
||||
updatePnidPermissions: pnid.hasPermission(PNID_PERMISSION_FLAGS.UPDATE_PNID_PERMISSIONS)
|
||||
},
|
||||
linkedDevices: devices
|
||||
};
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
|
@ -34,6 +34,7 @@ import { updateBan } from '@/services/grpc/account/v2/update-ban';
|
|||
import { pardonBan } from '@/services/grpc/account/v2/pardon-ban';
|
||||
import { listBanComments } from '@/services/grpc/account/v2/list-ban-comments';
|
||||
import { createBanComment } from '@/services/grpc/account/v2/create-ban-comment';
|
||||
import { getPNIDs } from '@/services/grpc/account/v2/get-pnids';
|
||||
import type { AccountServiceImplementation } from '@pretendonetwork/grpc/account/v2/account_service';
|
||||
|
||||
export const accountServiceImplementationV2: AccountServiceImplementation = {
|
||||
|
|
@ -72,5 +73,6 @@ export const accountServiceImplementationV2: AccountServiceImplementation = {
|
|||
updateBan,
|
||||
pardonBan,
|
||||
listBanComments,
|
||||
createBanComment
|
||||
createBanComment,
|
||||
getPNIDs
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user