Gå til innhold

Dottie (intranettfeed)

1. Hva den gjør

Leverer intranett-feeden («Oppslag» på forsiden) med innlegg, bilder, kommentarer og reaksjoner, samt ansattdata.

Flyt

flowchart LR
    DOTTIE[Dottie] <-->|API-nøkkel + klient-ID| API[Connect API: DottieHelper]
    API --> FEED[Forsiden: oppslag + ansatte]
    classDef sys fill:#f8d7da,stroke:#b53b46
    class API sys

2. Dataretning

Begge veier. Connect API ↔ api.dottie.no.

3. Autentisering og konfigurasjon

API-nøkkel + klient-ID (custom auth, ikke OAuth).

Konfig Rolle
DottieClientId / DottieApiKey (Web.config) Felles fallback-nøkler
companiesSection … DottieClientId / DottieApiKey Per-selskap-nøkler (valgfritt)

Tilgangsregel: Selskaper som deler fallback-nøklene (alle unntatt det som eier dem) ser kun innlegg med topic-ID 5 («Alle Selskap»). Selskap med egne nøkler ser alt sitt.

Blokkeringsregel (per avdeling): Uavhengig av delte/egne nøkler kan en avdeling få konfigurert en liste med Dottie topic-ID-er som alltid skal skjules for den, via DottieBlockedTopicIds (kommaseparert) på companiesSection-oppføringen. Skalerer til vilkårlig mange avdelinger som deler samme Dottie-konto — hver avdeling har sin egen «Kun ‹avdeling›»-topic i Dottie, og blokkerer de andre avdelingenes topic-ID-er i sin egen DottieBlockedTopicIds. Eksempel med fire avdelinger (Vats/106, Stavanger/148, Nord/360, Øst/375) som deler samme nøkler: hver av dem blokkerer de tre andres «Kun ‹avdeling›»-topic, slik at et innlegg tagget «Kun Nord» kun vises for Nord (og fortsatt for evt. selskap med egne nøkler). Topic-ene opprettes i Dottie sitt eget admin-grensesnitt; API-et gjør ingen endring i Dottie, det filtrerer kun bort innlegg som har en blokkert topic-ID i responsen.

4. Implementasjon

  • dottieApi/DottieAPI/DottieClient.cs — AuthenticateAsync(clientId, apiKey) (bearer-token i token-feltet), GetFeedsPostAsync(), media, kommentarer.
  • Helpers/DottieHelper.cs — velger riktige nøkler per selskap (egne → felles fallback), FilterPostsByCompanyAccess() / FilterEnrichedPostsByCompanyAccess() (topic 5-regelen + blokkerte topic-ID-er fra GetBlockedTopicIds()), 1 times cache av ansatte. Logger via NLog (Debug/Warn/Error).
  • UserController.DottieFeedPosts henter innlegg, sorterer og filtrerer på status/tilgang før den kutter til de 10 nyeste — ellers kan et innlegg som er relevant for én avdeling falle utenfor før avdelingens eget filter rekker å inkludere det.

Auth gjøres ved hver forespørsel (ingen token-caching i klienten), så nøkkelbytte gir umiddelbar effekt.

5. Oppsett

  1. Legg felles DottieClientId/DottieApiKey i Web.config.
  2. For selskap som skal se alt sitt: legg egne nøkler i companiesSection.
  3. Innlegg som skal nå delte-nøkkel-selskaper må ha topic-ID 5 i Dottie.
  4. For å skjule enkelte innlegg for én avdeling: opprett topic i Dottie, sett topic-ID-en i DottieBlockedTopicIds på den avdelingens companiesSection-oppføring, og tagg innleggene med topic-en i Dottie.

6. Feilmodi

Symptom Årsak Tiltak
Oppslag-kortet tomt Auth feilet, eller selskapet deler nøkler og har ingen topic-5-innlegg Sjekk nøkler; legg innlegg på topic 5, eller gi selskapet egne nøkler
«Dottie credentials not configured» Verken egne eller fallback-nøkler satt Legg inn nøkler
Et innlegg mangler for én avdeling som burde se det Innlegget har en topic-ID som står i avdelingens DottieBlockedTopicIds Sjekk companiesSection og innleggets topics i Dottie
Ansattliste tom Ugyldig API-nøkkel Forny nøkkelen

7. Test

# 1) Auth
curl -s -X POST https://api.dottie.no/api/auth/apikey \
  -H "Content-Type: application/json" \
  -d '{"clientId":"‹id›","apiKey":"‹key›"}'
# 2) Feed
curl -s https://api.dottie.no/api/FeedPost -H "Authorization: Bearer ‹token›"

8. Rotasjon

Kun config-endring (Web.config eller companiesSection) + recycle.

Relaterte sider