holderdeord / hdo-site

Parliamentary monitoring website for Norway
https://data.holderdeord.no/
BSD 3-Clause "New" or "Revised" License
42 stars 16 forks source link

Opprette innlogging for representanter #398

Closed jarib closed 11 years ago

jarib commented 11 years ago

Hvordan kan vi gjøre dette med devise, gitt at vi per i dag har en User og en Representative-tabell?

Jeg ser for meg at vi ved lansering av tjenesten sender en epost til alle representantene hvor de får mulighet til å «aktivere» sin HDO-profil.

@jarib @jonathanronen

jarib commented 11 years ago

Vi bør teste ut litt forskjellige alternativer, f.eks.

jonathanronen commented 11 years ago

First attempt at using STI with Representative < User here: https://github.com/jonathanronen/hdo-site/tree/398_single_table_approach

Issues with this approach:

jarib commented 11 years ago

Kult at du fikk begynt på dette!

En tredje approach vi kanskje kan sjekke ut er å beholde User og Representative som separate enheter og heller ha en link mellom de (User.belongs_to :representative). Men det føles litt skittent. Er også åpen for andre forslag selvsagt, - er det noen andre systemer (kanskje fra helt andre domener) vi kan sjekke ut hvordan gjør dette?


Not all representatives have an email in our database. Do we add these manually?

Epostaddressene er skrapet fra Stortinget og finnes på de 169 representantene som er faste. Tror det er en grei start at bare de faste har tilgang.

Should all email-holding representatives have access?

Jepp, de bør hvertfall bli tilbudt muligheten via epost.

jarib commented 11 years ago

@jonathanronen: Vi har bestemt oss for å prioritere denne litt ned fram til slutten av mars. Pinger deg på noen andre saker.. :beers:

jonathanronen commented 11 years ago

Attempt using devise on Representative here: https://github.com/jonathanronen/hdo-site/tree/398_devise_for_representatives

This is relatively painless compared to using STI and seems cleaner to me.

However an issue to investigate closer is authorization (using pundit). Pundit uses current_user internally. Using this approach, a signed in representative is signed_in?, but current_user will be nil, while current_representative will be correct. Need to find a clear way of specifying policies for both User and Representative classes.

jarib commented 11 years ago

Nice, this does look like a better approach. Pundit adds very few methods so we can probably remove include Pundit and add our own #policy method in ApplicationController that checks for current_user || current_representative. I think this would also work, but it's probably less clear:

def current_user
  super || current_representative
end
drees123 commented 11 years ago

Flytter denne ut av milestone siden Jonathan er på ferie - tar opp tråden rett over påske.

jarib commented 11 years ago

Dette er på plass, lukker saken.