Skapa behörighetskontroll i c#

Trädvy Permalänk
Medlem
Registrerad
Mar 2017

Skapa behörighetskontroll i c#

Hej!

Jag sitter med ett projekt i skolan där vi ska skapa ett fungerande system.
Vi arbetar i C# och med WinForm.
Samt tre lager. Businesslayer, Datalayer och Viewlayer.
Vi använder oss av en databas som vi anropar via de olika lagrena.

Problemet som vi stött på nu är hur man skapar olika behörighetsgrader beroende på vem som är inloggad i systemet.

Vi har t.ex. en VD som ska ha tillgång till allt.
Sedan finns det en säljare som inte ska ha tillgång till allt t.ex.
VD:n vill kunna styra vad de olika anställda kan komma åt och inte i systemet.
Vi tänkte att man skulle kunna använda sig av checkboxar för att bestämma vem som kan se vad. Då alltså att via checkboxen göra olika buttons osynliga för då t.ex. säljare.

Vi kommer inte framåt och vet inte hur detta ska kunna fungera...

Någon som har något bra tips på kod så att detta skulle kunna fungera?

Tack!

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Maj 2013

När vi gjorde en liknande grej i databaskursen hade vi personens yrke i databasen och sen checkade koden mot det om man hade behörighet att göra saker.

Förutsatt att användarna loggar in i systemet borde du kunna göra de olika knapparna gråa (som exempel) när du ritar upp GUIt baserat på om de ska kunna använda dem eller ej. Enklast hade varit att ha ett fält i databasen som heter ”behörighet” som programmet checkar mot.

Skickades från m.sweclockers.com

CPU: i5 4670k @4.5Ghz GPU: 1080 TI ROG Strix RAM: 4x4GB 1666Mhz MoBo: MSI Z87-g45 GAMING PSU: Corsair CX 750M
En resa till Nordkorea

Trädvy Permalänk
Medlem
Registrerad
Mar 2017

Tusen tack för svaret!!!

Ända som jag funderar på, hur ska en VD kunna ändra vad som är synligt och inte via systemet typ.. Har du något tips på det?

Trädvy Permalänk
Medlem
Plats
Falun
Registrerad
Dec 2003

Enklast är att man arbetar med roller.
Lite abstrakt, exempelvis

Superuser Administratör VD HR Chef Senior Junior Praktikant

Till varje användarklass kan man applicera olika behörigheter där Superuser har alla, Administratör har allt utom utvecklingsspecifika behörigheter, VD har allt som är relevant för denna, etc etc.

Vidare så kan man ha mer strikta roller baserade på arbetsuppgift

HR Ekonomi Lager Webb Kundhantering

Till varje användare så kopplar man en eller flera roller beroende på hur mycket användaren ska ha tillgång till. Det går att bli superdetaljerad här också där man kanske har Lager - Inköp och Lager - Kassa eller liknande. Då kan man exempelvis skilja på personer som jobbar i kassan och personer som jobbar med lagerhanteringen. Kassapersonal får inte tillgång till inköpspriset medan Inköpsanställda får det.

En separat tabell kan man även ha där man kan tilldela eller ta bort specifika behörigheter. Dessa undantag gäller oavsett vilka behörigheter en roll ger. Detta används om det är så att det är en personal som oftast behöver ytterligare befogenheter. Exempelvis en person som springer mellan lager och kassa och behöver tillgång till exempelvis inköpspris och annat.

Vad man behöver är alltså:

Användare Behörighet Roll Länktabell mellan användare och roll Länktabell mellan användare och behörighet

För att hantera detta så laddar man lämpligtvis in alla roller och behörigheter vid uppstart alternativt vid inloggning av en användare. Baserat på vad användaren får eller inte får göra/se så matchar man användarens roller och behörigheter med behörigheten som krävs för varje funktion.

ηλί, ηλί, λαμά σαβαχθανί!?

Trädvy Permalänk
Medlem
Registrerad
Mar 2017

Detta var till stor hjälp!! Tusen tack!

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Karlstad
Registrerad
Nov 2010

@Leedow: svar är riktigt bra och ambitiöst.
Att tillägga så kör många idag detta på AD nivå, så beroende på vilken användare som är inloggad i windows så får man rätt behörighet i programmet automatisk.
Men det är precis som Leedow skrev, det är bara en fråga var man lägger grejerna.

Orsaken till varför det är så bra är flera. Säg att man har mängder av arbetare på ett lager och så vill man ge dem behörighet till ett nytt program. Ja det är mycket jobb att lägga till behörigheten i programmet. Sedan kan det finnas hur många behörigheter som helst i samma program.
Förutom att det är omständligt så blir det jobbigt att upptäck fel, som att man av misstag har gett en nvändare för mycket eller lite rättigheter.

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Mar 2004

Håller med föregående talare att @Leedow svar var mycket bra och visar dig hur du ska tänka. När jag studerade gjorde jag precis samma sak fast lite simplare, t ex Administrator, power user och user. Alla dessa fanns i databasen och beroende på roll fick användarna tillgång till olika mycket i systemet.

"Happiness is only real when shared"