Jag har en liten fundering med ett system som jag skall göra.
Förut så ha jag alltid använt mig av systemid som då är olika beroende vilken kund som använder systemet.
Nu funderar jag på att lösadet med olika roller istället.
Fördelar/Nackdelar?
En nackdel som jag ser det är att det kommer att innebära att det skapas en jäkla massa roller, samt fler roller per "system" beroende på vilka rättigheter användaren har.
Ett rollbaserat system för rättigheter är att föredra, då man enkelt bara lägger till användaren till den roll som du vill att den skall ha rättighet för. Du bryr dig inte om vilka användare som finns när du bygger ditt system, utan bygger systemet mot rollerna och sedan placerar du användare i de roller som passar.
Att knytta sig så hårt som till specifika ID:en kör ditt system onödigt oflexibelt om du vill ändra rättigheter för någon användare.
Oftas så behöver det inte bli så många roller, det är inte många system som måste ha en specifik roll per funktion, utan man har kanske 4-5 olika roller som har olika rättigheter, typ: Admin, SuperUser, User, Reader, Och beroende på vilken roll som man får så får man göra olika saker. Men visst är det så att varje funktion kräver sin egen roll, så blir det en hel del roller som skall till, speciellt om du skall dela upp de på reader/writer rättigheter också.
KalleBanan har ett företag XXXX med ett par användare
NinaKanin har ett företag YYYY med ett par användare
osv
10 företag i inledningsfas - kommer förhoppningsvis bli fler.
Kallebanan vill ju inte att Lisakanins användare skall se hans "data".
Detta innbär ju att man först har en roll som särskiljer företagen åt som man använder för att spara data i dbn.
och sedan så har man ett par generella roller om vad användaren får göra.
typ (search, add, admin osv)
KalleBanan har ett företag XXXX med ett par användare
NinaKanin har ett företag YYYY med ett par användare
osv
10 företag i inledningsfas - kommer förhoppningsvis bli fler.
Kallebanan vill ju inte att Lisakanins användare skall se hans "data".
Nej tro f-n att kallebanan inte vill att lisakanin skall kunna se hans företagsdata, och det är ju därför som du givetviss HAR OLIKA DATABASER för dessa företag. Det är en grundförutsättning för att skapa säkrasystem att man fysiskt särskiljer de olika företagens data åt. Att ha olika företagsdata i samma databas är verkligen en fet NO-NO.
Med det sagt, nu när du vet hur världen skall se ut, så skall jag berätta hur jag hade löst ditt problem om jag hade hamlat i den situationen. Jag skulle helt enkelt ha givet varje företag ett unikt ID (en guid) och sparat ner den tillsammans med datan i en egen kolumn. När en användare sedan hade efterfrågat data så hade jag skickat med den användarens företagsID och filtrerat ut datan med hjälp av det ID. På det sättet så slipper du speciella roller för varje företag.
Så du har helt enkelt de generella rollerna: Search, Add, Admin. Som kontrollerar om användare får göra det han vill, och när sedan data hämtas från databasen så lägger du bara till WHERE [CompanyID] = '500AB1A3-67F9-434b-BA76-1EF1156497C1' eller vad nu ID för företaget är.