AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Benutzerrechte MySQL erstellen Tabellenseitig
Thema durchsuchen
Ansicht
Themen-Optionen

Benutzerrechte MySQL erstellen Tabellenseitig

Ein Thema von stOrM · begonnen am 7. Apr 2016 · letzter Beitrag vom 8. Apr 2016
 
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#1

Benutzerrechte MySQL erstellen Tabellenseitig

  Alt 7. Apr 2016, 06:28
Datenbank: MySQL • Version: 5.7.11 • Zugriff über: localhost
Moin,
irgendwie komme ich nicht klar, was die Referenzen meiner Tabellen angeht.
Ich muss mal etwas ausholen, damit man nachvollziehen kann worum es geht und was ich zu erreichen versuche.

Gehen wir davon aus wir haben eine Anwendung in der man die Zugriffsrechte der Benutzer derselbigen regeln möchte (mit Regeln ist gemeint, zu welcher Gruppe gehört der Benutzer, was darf dieser z.B. nur ansehen also lesen, schreiben löschen usw.)

Der Sinn soll später halt sein, möglichst einfach einen neuen Benutzer anzulegen, die Gruppe auszuwählen so welcher dieser gehören soll und was dieser Benutzer in welchen Programmmodulen darf. Des weiteren soll dann später anhand dieser Daten die GUI dementsprechend reagieren (wenn nur Leserechte existieren kann ich halt so simple alle "delete" und "create" Buttons deaktivieren...)

Dazu dachte ich mir lege ich vermutlich folgende Tabellen an:

"Users"
Code:
CREATE TABLE `users` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(45) CHARACTER SET utf8 NOT NULL,
  `middle_name` varchar(45) CHARACTER SET utf8 DEFAULT NULL,
  `last_name` varchar(45) CHARACTER SET utf8 NOT NULL,
  `login_name` varchar(254) CHARACTER SET utf8 NOT NULL,
  `email` varchar(45) CHARACTER SET utf8 NOT NULL,
  `password` varchar(254) CHARACTER SET utf8 NOT NULL,
  `created_at` date NOT NULL,
  `updated_at` date DEFAULT NULL,
  `deleted_at` date DEFAULT NULL,
  `active` int(11) NOT NULL,
  `u_rolecode` varchar(50) NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
"Roles" role_rolecode z.B. "Admin"
Code:
CREATE TABLE IF NOT EXISTS `roles` (
  `role_rolecode` varchar(50) NOT NULL,
  `role_rolename` varchar(50) NOT NULL,
  PRIMARY KEY (`role_rolecode`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
"Role_Rights" Diese Tabelle soll regeln, für welches Module in der Anwendung welche Rechte für den angemeldeten Benutzer vorhanden sind.

Beispiel:
rr_rolecode = Admin
rr_modulecode = Login
rr_create = 0 oder 1 (Kann neuen Benutzer anlegen oder nicht)

Code:
CREATE TABLE IF NOT EXISTS `role_rights` (
  `rr_rolecode` varchar(50) NOT NULL,
  `rr_modulecode` varchar(50) NOT NULL,
   `rr_create` INT(2) NOT NULL,
   `rr_edit` INT(2) NOT NULL,
   `rr_delete` INT(2) NOT NULL,
   `rr_view` INT(2) NOT NULL
  PRIMARY KEY (`role_rolecode`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
Problematisch wird bei mir wieder das Verknüpfen der Tabellen anscheinend hab ich da einen groben Schnitzer als ich der Tabelle Users folgendes hinzufügen wollte quittierte mir der MySQL Server dies mit einem: "Cannot add foreign key constraint"

Code:
   FOREIGN KEY (`u_rolecode`) REFERENCES `roles` (`role_rolecode`) ON UPDATE CASCADE ON DELETE RESTRICT
Also ich bin mir auch generell nicht sicher ob der Aufbau meiner Tabellen optimal oder eher suboptimal ist für das was ich damit erreichen möchte. Wenn jemand einen anderen Vorschlag hat bin ich sehr gerne geneigt das ganze dementsprechend komplett abzuändern.

Jedenfalls komme ich so irgendwie nicht weiter.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz