Kun Kiho Labsiin tuli varauskalenteri, sen mukana tuli myös hienojakoiset varausoikeudet: organisaatio saattoi päättää, kuka näkee kaikki varaukset, kuka varaa toisen puolesta ja kuka saa poistaa muiden varauksia. Oikeudet pystyi antamaan sekä yksittäiselle käyttäjälle että kokonaiselle Kiho-roolille. Malli toimi hyvin — mutta se osasi vain varauskalenterin.
Muissa osioissa oikeus oli edelleen karkea: joko koko osio oli auki tai se oli kiinni. Ja osion pystyi antamaan vain käyttäjä kerrallaan — koko roolille ei. Satojen käyttäjien organisaatiossa kumpikin rajoite tuntuu heti. Nyt yleistimme varauskalenterin mallin kaikkiin osioihin ja lisäsimme roolitason osio-oikeudet. Lopputulos on yksi skaalautuva mekanismi.
Kaksi kerrosta, jotka yhdistyvät
Käyttöoikeudet rakentuvat kahdesta kerroksesta:
- Osiot ovat karkea kerros: ne päättävät, minkä alueen sovelluksesta käyttäjä ylipäätään näkee — Varauskalenteri, Ajoneuvotiedot, Lab-Kartta, Lomakkeet, Digipiirturi ja niin edelleen.
- Toimintokohtaiset oikeudet ovat hieno kerros: osion sisällä ne päättävät, mitä siellä saa tehdä. Lab-Kartassa erikseen alueiden katselu, reittihistoria, alueiden muokkaus ja valvonnan kytkeminen; jakolinkeissä katselu, luonti ja peruutus; ajoneuvotiedoissa telemetrian katselu — ja niin edelleen jokaisessa osiossa.
Molemmat kerrokset noudattavat samaa periaatetta: oletuksena ei mitään, ja käyttäjän todelliset oikeudet ovat roolin ja käyttäjän oikeuksien yhdiste. Rooli antaa perustan, käyttäjätason oikeudet lisätään sen päälle. Näin dispatcher voi periä roolistaan laajat oikeudet, ja yhdelle henkilölle voidaan antaa yksittäinen lisäoikeus muuttamatta koko roolia.
Paikallinen pääkäyttäjä on tämän yläpuolella: pääkäyttäjällä on aina kaikki osiot ja kaikki oikeudet.
Osio koko roolille kerralla
Tämä on skaalautuvuuden ydin. Kun sadalla kuljettajalla on sama Kiho-rooli, et jaa Varauskalenteria sata kertaa — annat sen kerran roolille, ja jokainen roolin jäsen perii sen. Kiho on roolien ja jäsenyyksien lähde; me emme kopioi roolilistoja emmekä kirjoita jäsenyyksiä, vaan luemme käyttäjän roolin kirjautumishetkellä ja liitämme oikeudet siihen.
Tästä seuraa yksi tärkeä sääntö, jonka käyttöliittymäkin sanoo ääneen: roolimuutokset astuvat voimaan seuraavassa kirjautumisessa. Rooli luetaan sisäänkirjautuessa, joten juuri vaihdettu rooli näkyy vasta kun käyttäjä kirjautuu uudelleen — sama logiikka kuin Kihon omalla käyttäjätasolla.
Käyttäjähallinnassa kaksi näkymää
Käyttäjähallinta jakautuu kahteen välilehteen:
- Roolit on ensisijainen työkalu. Jokainen Kiho-rooli on oma korttinsa: valitset roolille osiot ja avaat osion oikeudet ryhmänä. Jokainen ryhmä näyttää valittujen määrän ("5 / 10") ja koko ryhmän saa valittua tai tyhjennettyä kerralla. Kun kokonaisuus hoidetaan rooleilla, yksittäisiä käyttäjiä ei tarvitse juuri koskea.
- Käyttäjät on poikkeuksia varten. Roolista peritty oikeus näkyy valittuna ja lukittuna, vihjeellä mistä roolista se tulee — käyttäjälle säädetään vain se, mikä poikkeaa roolista.

Kukaan ei menetä mitään
Kun oikeuksia pilkotaan hienommaksi, riski on, että joku menettää jotain mitä hänellä oli. Sitä ei tapahtunut. Jokainen, jolla oli osio ennen tätä muutosta, sai osion oletusoikeudet täsmälleen sen mukaan, mitä pelkkä osio ennen osasi — ei enempää eikä vähempää. Samat turvalliset oletukset annetaan jatkossa aina, kun osio myönnetään uudelle käyttäjälle tai roolille: uusi osio ei jää kuolleeksi kirjaimeksi, jossa linkki näkyy mutta jokainen näkymä sen takana on kielletty.
Yhden vahtikoiran pidimme: käyttäjältä ei voi riisua osion viimeistä katseluoikeutta jättäen osion silti näkyviin. Jos oikeudet jäisivät sellaisiksi, että osio näkyy mutta mitään sen sisältä ei voi katsoa, tallennus torjutaan — joko katseluoikeus jää tai koko osio poistetaan.
Mitä tämä tarkoittaa käytännössä
Ajatellaan organisaatiota, jolla on kaksi selkeää roolia: kuljettajat ja työnjohto.
- Kuljettaja-roolille annetaan Varauskalenteri ja Ajoneuvotiedot, ja varausoikeuksista vain omien varausten hallinta. Sata kuljettajaa saa oikeutensa yhdellä määrittelyllä.
- Työnjohto-roolille annetaan lisäksi Lab-Kartta alueiden muokkausoikeuksin ja laajat varausoikeudet — myös toisen puolesta varaaminen ja muiden varausten muokkaus.
- Yhdelle assistentille annetaan käyttäjätasolla oikeus varata toisen puolesta, vaikka hänen roolinsa ei sitä anna — poikkeus ilman uutta roolia.
Kaikki tämä ilman, että Kihon rooleja tai käyttäjiä muutetaan: oikeudet ovat Labsin omaa tietoa, kiinnitettyinä Kihon tunnisteisiin.
Ylätason osiovalinta: tenantille vain tarvittavat osiot
Roolien ja käyttäjien yläpuolelle tuli vielä yksi kerros: Kiho Labs -ylläpito aktivoi tenantille vain tarvittavat osiot. Jos organisaatiosi ei käytä vaikkapa digipiirturia tai lomakeraportointia, koko osio on tenantilta pois päältä — se ei näy sivupalkissa, eikä sitä tarjota rooli- tai käyttäjäoikeuksien valikoimassa. Pääkäyttäjäsi näkee ja jakaa vain sitä, mikä teillä oikeasti on käytössä.
Kerros noudattaa samaa periaatetta kuin muukin malli: poiskytkentä piilottaa, ei poista. Roolien ja käyttäjien oikeudet säilyvät ennallaan, ja kun osio aktivoidaan takaisin, kaikki palaa täsmälleen sellaisena kuin se oli. Uusi asiakas voidaan siis avata kapealla osiovalikoimalla ja laajentaa myöhemmin — ilman että oikeuksia määritellään uudelleen.
Kokeile itse
Käyttöoikeuksien hallinta on osa Kiho Labsia. Kirjaudu osoitteessa labs.kiho.fi omilla Kiho-tunnuksillasi, avaa Käyttäjähallinta ja aloita Roolit-välilehdeltä: valitse roolille osiot ja avaa osion oikeudet. Yksittäiset käyttäjät jäävät poikkeuksiksi — juuri niin kuin oikeuksien kuuluukin skaalautua.