Forskjeller fra versjon 31 til 32
! Valg i MDB2 - Teknisk dokumentasjon !! ER-diagram [image|mdb2election_er.png|ER-diagram] !! Valg-tabellen og valgtype Et valg er gyldig når tiden er mellom =starter= og =slutter=. Alle funksjoner rundt et valg unntatt valgsletting og å sjekke resultat er kun tilgjengelig mens valget er gyldig. Ved stenging av valget settes =slutter= lik nåtid. Et valg kan ha en av tre typer: | *valgtype * | *navn* | *beskrivelse* | | fysisk | Fysiske urnevalg | For urnevalg med fysiske lapper. Systemet brukes kun til validering av medlemskap. | | remote | Digitale valg (remote) | Alle medlemmer med gyldig medlemskap i MDB2 kan stemme ved å logge inn på MDB2. Ingen beeping av kort gjøres; alle kan stemme uansett Hovedsakelig brukt under covid.| | digitalt | Digitale valg (tilstedeværelse) | Man må først beepe kortet i storsalen før man kan avlegge stemme. Dette er også den eneste valgtypen der en valgbås kan benyttes. | !! Databasestruktur !!! ER-diagram [image|mdb2election_er.png|ER-diagram] !!! Valg Et valg er gyldig når tiden er mellom =starter= og =slutter=. Alle funksjoner rundt et valg untatt valgsletting og å sjekke resultat er kun tilgjengelig mens valget er gyldig. Ved stenging av valget settes =slutter= lik nåtid. Et valg kan ha en av tre typer: | *valgtype * | *navn* | *beskrivelse* | | fysisk | Fysiske urnevalg | For urnevalg med fysiske lapper. Systemet brukes kun til validering av medlemskap. | | remote | Digitale valg (remote) | Alle medlemmer med gyldig medlemskap i MDB2 kan stemme ved å logge inn på MDB2. Ingen beeping av kort gjøres; alle kan stemme uansett Hovedsakelig brukt under covid.| | digitalt | Digitale valg (tilstedeværelse) | Man må først beepe kortet i storsalen før man kan avlegge stemme. Dette er også den eneste valgtypen der en valgbås kan benyttes. | !!! Stemmer =stemmer= brukes for å verifisere at man ikke kan stemme flere ganger via medlemsdatabasen. Vesentlig her er variabelen =stemt=. Hvis denne er =false= betyr det at medlemmet har registrert seg, men ikke enda avlagt stemme. Hvis denne er =true= er stemmen avgift. For digitale valg med tilstedeværelse kan altså medlemmet kun avgi stemme dersom =stemt= er =false= (det samme gjelder angring av stemmer). Ved digitale valg uten krav om tilstedeværelse settes denne =true= etter medlemmet har stemt ( =false= brukes ikke). Når det er valg med fysiske lapper settes den lik =true= når kortet har blitt beepet (igjen, =false= brukes ikke). =stemmer= har også en fremmednøkkel til =medlem= tabellen, fordi en må ha gyldig bruker i MDB for å avgi stemme. Denne brukes da for å bekrefte at et medlem ikke kan beepe kortet to ganger. !!! Valgbås-stemmer =valgbaas= representerer stemmer i valgbåsen. Denne har et =aktiv= flagg som forsikrer at kun en kan være i valgbåsen samtidig. Så hvis =aktiv= er =true= for en rad regnes valgbåsen som opptatt. Hvis man bruker funksjonen for å frigjøre en opptatt valgbås (eller angrer valgbås-beep) vil denne sette =aktiv= til =false= for den aktuelle raden. Valgbåsen lar kun en person avgi stemme hvis det finnes en rad der =aktiv= er =true=. Denne tabellen har en fremmednøkkel mot =kort= , siden kortet ikke nødvendigvis må være registrert på en bruker (men det må finnes i systemet, siden systemet vet alle kort lagt ut for salg). Det gjøres mindre validering her: det som sjekkes er at kortet er et medlemskort, og hvis det tilhører et medlem i systemet, sjekk at denne personen ikke har kort som har blitt brukt til å avlegge stemme på nett. !!! Valgbås-sesjon =valgbaas_sesjon= representerer nettop det: en valgbås-sesjon. Hva er det for noe? Jo, vi må ha en måte å si at Raspberry PI-en som brukes som valgbås-PC faktisk er den eneste legitime kilden til stemmer i valgbåsen. Dette gjøres med litt autentisering: for hver sesjon genereres et 7-sifret passord. Dette passordet kan man så taste inn i valgbåsen når den starter opp. Etter det opprettes det en UUID-token ( =sesjon_pollett= ) i databasen, som også lagres som en cookie i nettleseren på Raspberry PI-en for videre autentisering, slik at man kun trenger å taste passordet en gang. Denne cookien er gyldig i 24 timer. Valgbås-sesjoner kan ugydliggjøres ved å sette =gyldig= til =false= . Dette kan man gjøre hvis det mot formodning skulle være noen hackere som taster inn passordet et annet sted og prøver å si at de er valgbåsen. Det kan kun eksistere en gyldig sesjon om gangen, så man vil merke at man ikke får til å sette opp valgbåsen. Da kan man ugyldiggjøre sesjonen og lage en ny en. Ved å velge "Sertifisering" fra hovedsiden kan man både se passordet og ugydliggjøre eksisterende valgbås-sesjon. !!! Alternativ Denne lagrer hvor mange stemmer hver av de ulike avstemmingsalternativene har fått. Merk at disse ikke lagres sammen med =valgbaas= eller =stemmer= for å gjøre det mindre sporbart hvem som har stemt på hva. For begrenset validering av resultatet sjekkes det at totalt antall stemmer per =alternativ= er lik totalt antall avgitte stemmer per =stemmer= + antall avgitte stemmer per =valgbaas= . !! Valgbås-klienten !!! Hardware og Software Valgbås-klienten er en Raspberry Pi med touch-display. Den kjører per nå Raspbian (nesten Debian) Bookworm som OS. Den er også lagt i [Puppet] med manifest =votebooth= . Se [Billig dør] for mer detaljer rundt pakker som brukes på denne, siden de kjører det samme i bånn. bånn (denne for også f.eks. en statisk IPv6-addresse gjennom Puppet). I kontrast med billigklienten, dog, bruker valgbåsen Chromium for GUI. Valgbåsen peker bare på URL-en [https://medlem.samfundet.no/votebooth]. Chromium-programmet er også startet med visse flagg som gjør at man ikke f.eks. kan bytte fane eller kødde rundt på andre måter i nettleseren. !!! Web-interface Etter at man har skrevet inn passord på valgbåsen vil den automatisk refreshe hvert 5. sekund i vente på at valgbås-funskjonæren skal beepe et gyldig kort. Man kan så avgi stemme. Etter stemmen er avgitt vil man bli møtt med "Stemmen er avgitt!" før man igjen går tilbake til samme refresh-loop.
Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: (edit-mode)