diff --git a/src/assets/user-info-settings/index.css b/src/assets/user-info-settings/index.css index 7eb8f3b..6be48d3 100644 --- a/src/assets/user-info-settings/index.css +++ b/src/assets/user-info-settings/index.css @@ -49,7 +49,7 @@ input[type="submit"] { min-height: 60px; text-align: center; font-size: 28px; - background: -webkit-gradient(linear, left top, left bottom, from(#FFF), color-stop(0.5, #FFF), color-stop(0.8, #F6F6F6), color-stop(0.95, #F5F5F5), to(#BBB))0 0; + background: -webkit-gradient(linear, left top, left bottom, from(#FFF), color-stop(0.5, #FFF), color-stop(0.8, #F6F6F6), color-stop(0.95, #F5F5F5), to(#BBB)) 0 0; border-radius: 12px; cursor: pointer; border: 0; @@ -117,11 +117,11 @@ div.group > select { cursor: pointer; } - div.group > span { color: #000; - } - div.group > svg { +} + +div.group > svg { fill: #9D6FF3; border: none; height: 40px; @@ -131,7 +131,7 @@ div.group > span { padding: 0px; margin-bottom: -10px; margin-left: 5px; - } +} .account-info { float: left; @@ -247,8 +247,7 @@ div.radio label { -webkit-box-align: center; -webkit-box-pack: center; text-align: center; - background: -webkit-gradient(linear, left top, left bottom, from(#FFF), color-stop(0.5, #FFF), color-stop(0.8, #F6F6F6), color-stop(0.95, #F5F5F5), to(#BBB))0 0; - border-radius: 12px; + background: -webkit-gradient(linear, left top, left bottom, from(#FFF), color-stop(0.5, #FFF), color-stop(0.8, #F6F6F6), color-stop(0.95, #F5F5F5), to(#BBB)) 0 0; cursor: pointer; border: 0; box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4); @@ -289,7 +288,7 @@ input[type="submit"] { height: 85px; line-height: 100px; padding: 0 40px 0 60px; - background: -webkit-gradient(linear, left top, left bottom, from(#FFF), color-stop(0.5, #FFF), to(#E6E6E6))0 0; + background: -webkit-gradient(linear, left top, left bottom, from(#FFF), color-stop(0.5, #FFF), to(#E6E6E6)) 0 0; font-size: 28px; z-index: 20; border-radius: 40px 0 0 0; diff --git a/src/services/nnas/index.ts b/src/services/nnas/index.ts index 7f88efa..0849261 100644 --- a/src/services/nnas/index.ts +++ b/src/services/nnas/index.ts @@ -21,7 +21,7 @@ import settings from '@/services/nnas/routes/account-settings'; // * Router to handle the subdomain restriction const nnas = express.Router(); -// Static routes for the user information app +// * Static routes for the user information app async function setCSSHeader(request: express.Request, response: express.Response, next: express.NextFunction): Promise { response.set('Content-Type', 'text/css'); return next(); diff --git a/src/services/nnas/routes/account-settings.ts b/src/services/nnas/routes/account-settings.ts index c9902dd..58fa669 100644 --- a/src/services/nnas/routes/account-settings.ts +++ b/src/services/nnas/routes/account-settings.ts @@ -16,7 +16,7 @@ import { Country, Region } from '@/types/services/nnas/regions'; import timezones from '@/services/nnas/timezones.json'; import regionsList from '@/services/nnas/regions.json'; -const router: express.Router = express.Router(); +const router = express.Router(); const accountSettingsSchema = z.object({ gender: z.enum(['M', 'F']), @@ -36,13 +36,15 @@ const accountSettingsSchema = z.object({ */ router.get('/ui/profile', async function (request: express.Request, response: express.Response): Promise { const server: HydratedServerDocument | null = await getServerByClientID('3f3928cc6f780638d360f0485cef973f', config.server_environment); - const token: string | undefined = getValueFromHeaders(request.headers, 'x-nintendo-service-token'); + const token = getValueFromHeaders(request.headers, 'x-nintendo-service-token'); + if (!server || !token) { response.sendStatus(504); return; } + const aes_key: string = server?.aes_key; - const decryptedToken: Buffer = decryptToken(Buffer.from(token, 'base64'), aes_key); + const decryptedToken = decryptToken(Buffer.from(token, 'base64'), aes_key); const tokenContents: Token = unpackToken(decryptedToken); @@ -54,8 +56,8 @@ router.get('/ui/profile', async function (request: express.Request, response: ex return; } - const countryCode: string = PNID.country; - const language: string = PNID.language; + const countryCode = PNID.country; + const language = PNID.language; const regionLanguages: RegionLanguages = timezones[countryCode as keyof typeof timezones]; const regionTimezones: RegionTimezones = regionLanguages[language] ? regionLanguages[language] : Object.values(regionLanguages)[0]; @@ -65,9 +67,9 @@ router.get('/ui/profile', async function (request: express.Request, response: ex const miiFaces = ['normal_face', 'smile_open_mouth', 'sorrow', 'surprise_open_mouth', 'wink_left', 'frustrated']; const face = miiFaces[crypto.randomInt(5)]; - const notice: string | undefined = request.query.notice ? request.query.notice.toString() : undefined; + const notice = request.query.notice ? request.query.notice.toString() : undefined; - const accountLevel: string[] = ['Standard', 'Tester', 'Moderator', 'Developer']; + const accountLevel = ['Standard', 'Tester', 'Moderator', 'Developer']; response.render('index.ejs', { PNID, @@ -78,8 +80,7 @@ router.get('/ui/profile', async function (request: express.Request, response: ex regions: region ? region.regions: [], regionsList }); - } - catch (error: any) { + } catch (error: any) { LOG_ERROR(error); response.sendStatus(504); return; @@ -97,7 +98,9 @@ router.get('/mii/:pid/:face', async function (request: express.Request, response response.sendStatus(404); return; } - const miiImage: Buffer = await got(`${config.cdn.base_url}/mii/${request.params.pid}/${request.params.face}.png`).buffer(); + + const miiImage = await got(`${config.cdn.base_url}/mii/${request.params.pid}/${request.params.face}.png`).buffer(); + response.set('Content-Type', 'image/png'); response.send(miiImage); }); @@ -108,15 +111,15 @@ router.get('/mii/:pid/:face', async function (request: express.Request, response */ router.post('/update', async function (request: express.Request, response: express.Response): Promise { const server: HydratedServerDocument | null = await getServerByClientID('3f3928cc6f780638d360f0485cef973f', config.server_environment); - const token: string | undefined = getValueFromHeaders(request.headers, 'x-nintendo-service-token'); + const token = getValueFromHeaders(request.headers, 'x-nintendo-service-token'); + if (!server || !token) { response.sendStatus(504); return; } - const aesKey: string = server?.aes_key; - const decryptedToken: Buffer = decryptToken(Buffer.from(token, 'base64'), aesKey); - + const aesKey = server?.aes_key; + const decryptedToken = decryptToken(Buffer.from(token, 'base64'), aesKey); const tokenContents: Token = unpackToken(decryptedToken); try { @@ -137,7 +140,7 @@ router.post('/update', async function (request: express.Request, response: expre return; } - const timezoneName: string = (person.data.tz_name && !!Object.keys(person.data.tz_name).length) ? person.data.tz_name : pnid.timezone.name; + const timezoneName = (person.data.tz_name && !!Object.keys(person.data.tz_name).length) ? person.data.tz_name : pnid.timezone.name; const regionLanguages: RegionLanguages = timezones[pnid.country as keyof typeof timezones]; const regionTimezones: RegionTimezones = regionLanguages[pnid.language] ? regionLanguages[pnid.language] : Object.values(regionLanguages)[0]; @@ -152,7 +155,7 @@ router.post('/update', async function (request: express.Request, response: expre } const regionObject: Region | undefined = country.regions.find((region) => region.id === person.data.region); - const region: number = regionObject ? regionObject.id : pnid.region; + const region = regionObject ? regionObject.id : pnid.region; if (!timezone) { response.status(404); @@ -169,7 +172,7 @@ router.post('/update', async function (request: express.Request, response: expre pnid.flags.off_device = person.data.off_device_flag; if (person.data.server_selection) { - const environment: string = person.data.server_selection; + const environment = person.data.server_selection; if (environment === 'test' && pnid.access_level < 1) { response.status(400); diff --git a/src/types/common/config.ts b/src/types/common/config.ts index d62fcb1..0b27a16 100644 --- a/src/types/common/config.ts +++ b/src/types/common/config.ts @@ -47,4 +47,4 @@ export interface Config { secret_key: string; }; server_environment: string; -} \ No newline at end of file +} diff --git a/src/views/index.ejs b/src/views/index.ejs index a42d8f3..e306534 100644 --- a/src/views/index.ejs +++ b/src/views/index.ejs @@ -2,96 +2,96 @@ - Account Settings - - - -
-
-

Pretendo Network ID Settings

- - -
- -
-

User Settings

-
-

Birth Date

-

<%= PNID.birthdate %>

-
-
-

Gender

- -
-
-

Country

+ Account Settings + + + + +
+

Pretendo Network ID Settings

+ + +
+ +
+

User Settings

+
+

Birth Date

+

<%= PNID.birthdate %>

+
+
+

Gender

+ +
+
+

Country

-
-
-

Region

- -
-
-

Timezone

- -
-

Email

-
- -
-
- <% if(PNID.email.validated) { %> - Verified - - <% } else { %> - Email Not Verified - - <% } %> -
-

Other Settings

-
-

Server Environment

-
- checked=""<% } %>> - + <% for (let region of regionsList) { %> + + <% } %> + +
+
+

Region

+ +
+
+

Timezone

+ +
+

Email

+
+ +
+
+ <% if(PNID.email.validated) { %> + Verified + + <% } else { %> + Email Not Verified + + <% } %> +
+

Other Settings

+
+

Server Environment

+
+ checked=""<% } %>> + <% if(PNID.access_level >= 1) { %> checked="" <% } %> <% if(PNID.access_level < 1) { %> disabled <% } %> > <% } %> -
-
-
-

Email Notifications

-
- checked=""<% } %>> - - checked=""<% } %>> - -
-
-
-

Non-Nintendo Device Setting

-
- checked=""<% } %>> - - checked=""<% } %>> - -
-
-
- - <% if (notice) { %> - - <% } %> +
+
+
+

Email Notifications

+
+ checked=""<% } %>> + + checked=""<% } %>> + +
+
+
+

Non-Nintendo Device Setting

+
+ checked=""<% } %>> + + checked=""<% } %>> + +
+
+
+ + <% if (notice) { %> + + <% } %> - + \ No newline at end of file