drop/server/components
wdunn001 a74ed9eded
Some checks failed
Server CI / Lint (push) Failing after 2m0s
Server CI / Typecheck (push) Successful in 3m28s
feat(community): SSO to native game account bridge, phases 2 and 3
Adds the player-facing half of game account management: a panel on
/community/servers/[id] that shows your linked account for that server,
creates one, and changes its password.

None of these emulators speak OIDC and none will - each ships its own
login against its own auth database. So this is a bridge, not SSO: one
Drop identity tied to one native account per server, enforced by a unique
index on (userId, serverSlug). That constraint IS the feature.

Drop owns identity, authorization, the link table and the UI. The
per-game DB access and password crypto stay in mmo-portal's provider API
(SRP6 verifiers, EQEmu hashing) - code that writes into live auth DBs and
fails silently when subtly wrong.

The password never touches Drop's database; it goes straight through to
the provider, which turns it into whatever that emulator wants.

Notable details:
- GameServer.slug names the game, provider.key names the emulator. They
  agree for eqemu and daoc but wow != trinitycore, so the mapping is an
  explicit three-entry constant, not an assumption.
- Panel renders NOTHING when a server has no account backend (Impostor is
  a lobby with no identity), rather than a dead button.
- 'backend unreachable' is kept distinct from 'you have no account' - the
  latter would invite a duplicate during an outage.
- Provision creates in the game first, then links. The reverse would
  leave a link pointing at a nonexistent account, which reads as
  corruption to every later call.
- Authorization is just an authenticated Drop session with the ACL: Drop
  access and game access already imply each other, so a third gate could
  only disagree with them.

Typecheck clean.
2026-08-12 17:04:33 -04:00
..
Auth In-app store, torrential backend, locales (#332) 2026-02-06 00:12:24 +11:00
Directory Store overhaul (#142) 2025-07-30 13:40:49 +10:00
GameEditor Add age ratings (#451) 2026-07-26 11:42:16 +10:00
Icons Admin home page #128 (#259) 2025-11-08 09:14:45 +11:00
Modal API optimisations (#343) 2026-02-06 23:12:03 +11:00
PieChart Series of small fixes (#346) 2026-02-09 16:27:31 +00:00
Selector community: fold /community into the fork, source-build the three JS patches 2026-08-02 00:12:06 -04:00
Setup community: fold /community into the fork, source-build the three JS patches 2026-08-02 00:12:06 -04:00
SourceOptions FlatLibrary provider (#127) 2025-07-06 12:44:41 +10:00
UserHeader community: wire server registry deep links + main nav (friends widget, Community submenu, profile link) 2026-08-03 11:02:58 -04:00
AccountSidebar.vue Depot API & v4 (#298) 2026-01-13 15:32:39 +11:00
AddLibraryButton.vue Store overhaul (#142) 2025-07-30 13:40:49 +10:00
ApplicationLogo.vue Make application and logo configurable (#336) 2026-02-06 11:43:21 +11:00
CarouselPagination.vue Use 7zip for archive backend (#264) 2025-10-13 13:02:27 +11:00
CodeInput.vue Depot API & v4 (#298) 2026-01-13 15:32:39 +11:00
DropLogo.vue Admin task UI update & QoL (#194) 2025-08-19 15:03:20 +10:00
DropWordmark.vue Make application and logo configurable (#336) 2026-02-06 11:43:21 +11:00
EmojiText.vue Switch to nuxt assets for emojis (#311) 2026-01-14 14:49:58 +11:00
EmulatorWidget.vue API optimisations (#343) 2026-02-06 23:12:03 +11:00
GameAccountPanel.vue feat(community): SSO to native game account bridge, phases 2 and 3 2026-08-12 17:04:33 -04:00
GameCarousel.vue Make application and logo configurable (#336) 2026-02-06 11:43:21 +11:00
GamePanel.vue Store overhaul (#142) 2025-07-30 13:40:49 +10:00
GameSearchResultWidget.vue Game specialisation & delta versions (#323) 2026-01-23 16:04:38 +11:00
ImageUpload.vue Make application and logo configurable (#336) 2026-02-06 11:43:21 +11:00
ImportVersionLaunchRow.vue Autofill launch name on version import (#373) (#447) 2026-07-24 07:38:04 +10:00
LogLine.vue Paginated admin library & upgrade manifests (#351) 2026-02-25 02:17:33 +11:00
MiniTile.vue Refactoring and UI improvements on the admin home page (#348) 2026-02-09 18:40:45 +11:00
NewsArticleCreateButton.vue Logging (#131) 2025-07-09 12:01:23 +10:00
NotificationItem.vue Depot API & v4 (#298) 2026-01-13 15:32:39 +11:00
OptionWrapper.vue Logging (#131) 2025-07-09 12:01:23 +10:00
PanelWidget.vue chore: prettier pass 2025-04-15 21:46:34 -04:00
PlaytimeRail.vue community: M2 -- device enrollment, wrapper ingest, playtime, played-only listing 2026-08-03 01:08:39 -04:00
ProgressBar.vue Paginated admin library & upgrade manifests (#351) 2026-02-25 02:17:33 +11:00
RankingList.vue Admin home page #128 (#259) 2025-11-08 09:14:45 +11:00
RelativeTime.vue Small fixes (#141) 2025-07-20 14:56:15 +10:00
ServerForm.vue community: M4 -- game-server registry and issue reports 2026-08-03 03:19:54 -04:00
ServerStatusPanel.vue community: M4 -- game-server registry and issue reports 2026-08-03 03:19:54 -04:00
SkeletonCard.vue fix: etags and other 2025-04-14 10:52:12 +10:00
SourceTable.vue community: fold /community into the fork, source-build the three JS patches 2026-08-02 00:12:06 -04:00
StoreView.vue Make application and logo configurable (#336) 2026-02-06 11:43:21 +11:00
TaskWidget.vue Depot API & v4 (#298) 2026-01-13 15:32:39 +11:00
TileWithLink.vue Admin home page #128 (#259) 2025-11-08 09:14:45 +11:00
UserAvatar.vue community: M3 -- friends, presence, chat 2026-08-03 01:39:04 -04:00
UserFooter.vue community: M3 -- friends, presence, chat 2026-08-03 01:39:04 -04:00
UserHeader.vue community: wire server registry deep links + main nav (friends widget, Community submenu, profile link) 2026-08-03 11:02:58 -04:00