Permalänk

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!

Permalänk
Medlem

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

Visa signatur

CPU: Ryzen 5600xGPU: 1080 TI ROG Strix RAM:2x16GB G.skill Trident @ 3600MHz MoBo: Asus B550FPSU: Corsair SF750
En resa till Nordkorea
2 dagar i Tjernobyl

Permalänk

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?

Permalänk
Medlem

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.

Visa signatur

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

Permalänk

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

Skickades från m.sweclockers.com

Permalänk
Inaktiv

@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.

Permalänk
Medlem

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.

Visa signatur

"Happiness is only real when shared"