Implementering av Alumni Web Service

Dette dokumentet er den tekniske spesifikasjonen for en Web Service (WS) til den nye alumni-ordningen som skal utvikles av USIT.

Oversikt

Web Servicen (WS) vil benytte seg av Cerebrum Integration Server-rammeverket (CIS). Rammeverket støtter gjensidig autentisering mellom klient (websider) og server (WS), vha. sertifikater.

WS-en vil ha funksjonalitet for:

  • Autentisering
  • Oppretting av alumnibruker
  • Sammenslåing av personlig brukerkonto og alumni-konto
  • Uthenting av alumni-informasjon
  • Oppdatering av alumni-informasjon
  • Søk etter alumni

Se den generelle spesifikasjonen for alumni-løsningen for mer informasjon rundt alumni-ordningen. @todo: lenke

Alumnibruker

@todo: oppsummere, ordforklaringer etc fra alumni tekspec

Web Service

Brukerautentisering

Autentisering for alumni og admin i systemet, vil skje gjennom den eksisterende CIS-modulen for dette, PasswordAuthenticationService. Servicen tar seg av autentisering med brukernavn og passord, og utsteding av sesjonsnøkkel for spørringer mot andre moduler i WS-en. Det vil være opp til klient-applikasjonen (websidene) å ta i bruk sesjonsnøkkelen fra WS.

Autentisering av applikasjon

WS og klienter må også autentisere hverandre. Kun autentiserte klienter får snakke med WS. Dette kan løses ved bruk av sertifikater, på lignende måte som SoapIndividuationServer gjør det i dag:

  • Klienten vil bare koble seg til en WS som presenterer et sertifikat som er signert av en angitt CA/CA chain.

    Dersom man benytter seg av phplib og CICom-objektet her for å kommunisere med WS, kan dette gjøres ved å angi CA ved initialisering.

  • WS vil bare akseptere klienter som er signert av en angitt CA/CA chain, og hele CA chain + klientsertifikat må være hvitlistet av WS.

    Dette gjøres ved å angi CA og fingerprints til wrapperen TLSTwistedSoapStarter, som starter en Twisted-serverprosess med SSL-autentisering av sertifikater.

Dette må konfigureres og utføres av server-rammeverket og klient-applikasjonen, ved å opprette og angi sertifikater og fingerprints til applikasjonene.

Alumni-modul

Det alumni-funksjonalitet må samles i en eller flere moduler. Disse må sørge for fuksjonalitet for:

Registrering og søknad

Vi må ha funksjon for registrering av alumni. Søknad og registrering kan benytte seg av samme funksjon, da samme sett med data skal sendes inn. Funksjonen vil da måtte skille mellom registrering og søknad.

Funksjonen vil ha følgende parametre:

  • Navn
  • Fødselsdato
  • Kjønn
  • Andre kvalifikasjoner
  • Adresse
  • Ekstern epost-adresse
  • Mobilnummer
  • Arbeidssted
  • Stilling
  • Interesseområder

Bruk av parametere 'fødselsdato' og 'kjønn' vil gi feilmelding for innloggedede brukere: Kun manuelle kan oppgi dette selv.

Bruk av parameteret 'interesseområder' vil gi feilmelding for alle som registrerer en 'søknad', da dette ikke vil kunne lagres (vha. gruppeinnmelding) for disse.

For personer med gyldig 'status' fra FS vil også følgende bli slått opp (på nytt) og lagret:

  • Informasjon om oppnådd grad

Sammenslåing av manuell alumni og personlig brukerkonto

Dette vil være en funksjon som lar en personlig brukerkonto (ikke-alumni) ta over egenskapene til en manuell alumni. Etter sammenslåing, vil den manuelle alumni-kontoen kunne avvikles, og den personlige brukerkontoen vil ta over som tilknyttet alumni.

Funskjonen vil ta brukernavn og passord som argument. Funksjonen kontrollerer at:

  • innlogget bruker er en personlig brukerkonto (eid av Person-objekt)
  • innlogget bruker ikke er alumni
  • angitt brukernavn og passord er korrekt (vha. PasswordAuthenticationService)
  • angitt brukernavn er en manuell alumni.

Dersom alt stemmer, vil alumni-relatert informasjon, samt gruppemedlemsskap overføres fra manuell alumni til innlogget bruker. Manuell bruker kan så merkes for avvikling (utløpsdato og alumnisøker-karantene).

Oppdatering av alumni-informasjon

Vi må ha funksjoner for oppdatering av alumni-data. En slik funksjon vil ha et Alumni-objekt som parameter. Informasjonen i objektet vil kunne sammenlignes med det som ligger lagret i Cerebrum, og endringer som er i objektet vil bli forsøkt lagret.

Endringer vil kunne bli lagret dersom innlogget bruker har tilgang til å gjøre endringen (endring av f.eks. kjønn vil ikke være tillatt for noen), og endringen er gyldig (endring av mobilnummer må være riktig format).

Administrator vil kunne oppdatere en del informasjon for alumni. Funksjonen kan ta et brukernavn som parameter. Kun administrator kan angi brukernavn, og kun for noen parameter.

Følgende informasjon kan endres av alumni og admin:

  • Navn
  • Adresse
  • Mobilnummer
  • Ekstern e-postadresse
  • Arbeidssted
  • Stilling
  • Andre kvalifikasjoner

I tillegg vil alumni kunne endre følgende informasjon:

  • Medlsemmskap i grupper for interesseområder
  • (Lenker til sosiale nettsted, dersom dette er implementert)
  • (Reservasjon mot å vises i søk, dersom dette er implementert)
  • (Abonnementer, dersom dette er implementert)

Dersom man angir et parameter som ikke er tillatt, eller et argument som er ugyldig, vil funksjonen returnere en feilmelding, og ingen endringer gjennomføres.

Uthenting av alumni-informasjon

Vi må kunne hente ut informasjon om alumni. Dette gjøres med en funksjon som kontrollerer tilgang, og slår opp informasjon. Informasjon blir returnert i Alumni-objekt fra WS.

Kun informasjon man har tilgang til å se, vil bli returnert i objekter. En alumni vil kunne se all alumni-relatert informasjon om seg selv, mens administrator vil kunne se all alumni-relatert informasjon om alle alumni. Vi må ta høyde for at alumni vil kunne se noe alumni-relatert informasjon om et utvalg andre alumni.

Søking

Det må opprettes en funksjon for søking. Denne søke-funksjonen vil ta mange parametre, og returnere en liste med Alumni-objekt.

Hvert enkelt søkeparameter vil kreve et gitt tilgangsnivå. Dersom en benytter seg av et søkeparameter som ikke man har tilgang til å benytte seg av, vil man få feilmelding.

Hjelpefunksjoner

FS-status

Vi trenger funksjonalitet for å slå opp brukernavn/fnr i FS, og da kontrollere om vedk. kvalifiserer som alumni.

Hjelpefunksjonen vil kunne benyttes av klienten ved registrering (bestemme om registrering skal presenteres som registreringsskjema eller søknadsskjema. Funksjonen vil også behøves av WS ved registrering av alumni/søknad.

Funksjonen vil være tilgjengelig for alle innloggede brukere, men vil kun slå opp verdier (brukernavn/fnr) som er registrert i brukerens Person-objekt (fnr) eller Konto-objekt (brukernavn).

Funksjonen vil returnere informasjon om oppnådd grad og/eller nåværende studieprogram. Dersom ikke denne informasjonen finnes, vil funksjonen returnere en negativ verdi eller nullverdi. Dersom det finnes informasjon om FS-status, vil klienten kunne presentere det i registreringsskjemaet.

Alumni-status/tilgang

Vi må ha hjelpefunksjon for å finne innlogget bruker sin status, for å styre tilgang til ulik funksjonalitet. Vi er interessert i å vite om brukeren er ikke-alumni, manuell alumni, tilknyttet alumni eller administrator.

Dette vil kunne brukes av WS til å bestemme tilgang til funksjoner og parametre, samt gi klienten mulighet til å tilpasse grensesnittet.

Funksjonen vil være tilgjengelig for alle innloggede brukere.

Uthenting av standard-data

For innloggede brukere skal deler av registreringsskjemaet fylles med forslag. Dette er en oppgave som må løses av klient-applikasjonen. For å kunne gjennomføre dette, må klienten være i stand til å hente ut personalia og annen informasjon om innlogget bruker, og det må gjøres med en hjelpefunksjon. Standard-verdier som skal slåes opp er:

  • Navn fra kildesystemet system:cached
  • Adresse fra kildesystemet system:fs, av type PRIVPOST (Constants.adress_post_private). Dette er det FS kaller 'hjemstedsadresse'.
  • Ekstern e-postadresse – Vi returnerer evt. e-postadresse registrert i EmailForward for primæradressens EmailTarget.
  • Mobilnummer fra kildesystemet system:fs, av type MOBILE (Constants.contact_mobile_phone).
  • Dersom det er praktisk å gjennomføre basert på FS-data: Standard-grupper iht. studieprogram og oppnådde grader.

Funksjonen vil være tilgjengelig for alle innloggede ikke-alumni (evt. alle innloggede brukere).

Av- og påmelding i tidsskrift

Alumni skal ha mulighet til å melde seg av og på tidsskrift fra klient-applikasjonen. Dette kan gjennomføres både fra klienten og WS.

Dersom dette gjøres fra WS, kan en e-post automatisk fylles inn med innlogget bruker sin adresse (og evt. annen nødvendig informasjon) og sendes til instans som vedlikeholder abonnementslister.

Det kan være fordelaktig å gjøre dette i WS, i tilfelle gjennomføringen av av- og påmelding må endres senere.

Funksjonen vil være tilgjengelig for alle innloggede alumni.

Objekter fra Cerebrum

Alumni-objekt

Alumni kan representeres som ComplexModel-objekter i WS, hvor all alumni-informasjon er representert som attributter.

Objektet vil primært fungere som utvekslingsobjekt mellom WS og klient-applikasjon. Utveksling vil kunne foregå slik:

  • Klient ber om å se informasjon om en gitt alumni
  • WS samler inn alumni-relatert informasjon, og bygger et Alumni-objekt som representerer dette
  • Det ferdige objektet sendes tilbake til klienten
  • Klienten gjør en endring i objektet (f.eks. 'arbeidsplass')
  • Objektet sendes tilbake til WS
  • WS bygger et nytt Alumni-objekt, og sammenligner det som ble mottatt fra klienten.
  • Dersom innlogget bruker har tilgang til å utføre endringene, og endringene er gyldige, vil de kunne utføres og lagres.

AlumniGruppe-objekt

Medlemsskap i interessegrupper vil kunne representeres som ComplexModel-objekter, hvor alumni-brukernavn og gruppenavn lagres som attributter.

Gruppemedlemsskap kan således utveksles mellom klient og WS som en liste over slike objekter. Denne fremgangsmåten minner om hvordan gruppemedlemsskap utveksles i SoapGroupService.

Publisert 10. apr. 2013 13:40