From 28567cd64a8e8c21dab5f87c32094044deedf7ce Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Mon, 15 Sep 2025 14:04:40 -0700 Subject: [PATCH 1/2] Begin affiliates frontend --- apps/frontend/src/composables/affiliates.ts | 23 +++ apps/frontend/src/layouts/default.vue | 17 +- apps/frontend/src/locales/en-US/index.json | 3 + apps/frontend/src/pages/admin/affiliates.vue | 198 +++++++++++++++++++ apps/frontend/src/pages/servers/index.vue | 24 ++- packages/assets/generated-icons.ts | 6 + packages/assets/icons/affiliate.svg | 11 ++ packages/assets/icons/circle-user.svg | 1 + packages/assets/icons/user-search.svg | 1 + 9 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 apps/frontend/src/composables/affiliates.ts create mode 100644 apps/frontend/src/pages/admin/affiliates.vue create mode 100644 packages/assets/icons/affiliate.svg create mode 100644 packages/assets/icons/circle-user.svg create mode 100644 packages/assets/icons/user-search.svg diff --git a/apps/frontend/src/composables/affiliates.ts b/apps/frontend/src/composables/affiliates.ts new file mode 100644 index 0000000000..46081dcdea --- /dev/null +++ b/apps/frontend/src/composables/affiliates.ts @@ -0,0 +1,23 @@ +export const useAffiliates = () => { + const affiliateCookie = useCookie('mrs_afl', { + // maxAge: 60 * 60 * 24 * 7, // 7 days + maxAge: 60 * 60, // an hour + sameSite: 'lax', + secure: true, + httpOnly: false, + path: '/', + }) + + const setAffiliateCode = (code: string) => { + affiliateCookie.value = code + } + + const getAffiliateCode = (): string | undefined => { + return affiliateCookie.value || undefined + } + + return { + setAffiliateCode, + getAffiliateCode, + } +} diff --git a/apps/frontend/src/layouts/default.vue b/apps/frontend/src/layouts/default.vue index 99cb7eb82f..b05c3f20d7 100644 --- a/apps/frontend/src/layouts/default.vue +++ b/apps/frontend/src/layouts/default.vue @@ -362,6 +362,12 @@ link: '/admin/user_email', shown: isAdmin(auth.user), }, + { + id: 'affiliates', + color: 'primary', + link: '/admin/affiliates', + shown: isAdmin(auth.user), + }, { id: 'servers-notices', color: 'primary', @@ -379,7 +385,7 @@