USER Management in SQL übergreifend auf JAVA Programm

P

Paraba

Mitglied
Guten Tag Liebe Community,

habe Probleme bei einer Implementierung von User Management, da ich leider im Internet nichts dazu finde was mir weiterhelfen konnte richte ich mich nun an euch.

Aufgabenstellung:

There should be some user management implemented for the program:

New hotels can only be added when a super user password (which is stored in the database) is known.

Each hotel has its own password that is defined when the hotel is created.

The information about a hotel can only be changed if the super user password or the password of the hotel is known.

The same applies to the occupational information about a hotel.

Habe die Datenbank und den Java Coder fertig jedoch habe ich leider keine Ahnung wie ich ein Super User in SQL anlege und den danch in JAVA nutzen kann.

Freue mich über Antworten Hilfestellungen oder Links zu Informationen.

LG
 
D

Dukel

Top Contributor
Ist das eine Aufgabe? Ist das ein Projekt?
Es gibt unterschiedliche Möglichkeiten eine Benutzerverwaltung zu implementieren.
 
D

Dukel

Top Contributor
Und wie sieht die DB bei dir aus?
Du musst kein Superuser anlegen, nur ein Passwort (gehasht, auch wenn es nicht gefordert ist. Klartextpasswörter in DB gewöhnt man sich nicht an!) zu jedem Hotel und als "Superuserpasswort".
 
P

Paraba

Mitglied
Ist eine ganz normale SQL Datenbank haben vorgefertigte Daten die wir einspeisen und können Hotels/Tabellen/Belegung usw hinzufügen/verändern. Wie kann ich das einstellen das wenn ich ein neues Hotel anlege es automatisch ein Passwort bekommt ? Und wie lege ich das an das dich eine Passwortabfrage bekomme wenn ich ein Hotel hinzufügen möchte ?
 
D

Dukel

Top Contributor
Du brauchst halt in der Tabelle der Hotels eine Spalte für das Passwort. Dann musst du beim erstellen eines Hotels neben dem Hotel ein Passwort speichern (manuell oder zufällig). Bei der Änderung der Hotel Infos fragst du das Passwort ab.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Hilfestellung, wie du in der Datenbank eine ganz normale Spalte hinzu fügst?
Oder Hilfestellung, wie du diese Spalte in Java abfragst und mit dem eingegebenen Passwort vergleichst?
Oder wie du die Spalte beim Anlegen eines neuen Hotels füllst?

Bei der Aufgabenstellung würde ich erwarten, dass du das alles grundsätzlich können solltest – an der Aufgabe ist nichts besonderes, womit hast du denn Probleme? :)
 
P

Paraba

Mitglied
Eine ganz normale Spalte hinzufügen ist natürlich kein Problem.

Ich habe in Java mein GUI mit Buttons, wo ich ein Hotel anlegen kann und laut der Angabe müsste ich wenn ich ein Hotel anlegen möchte ein Fenster öffnen wo ich das Super Passwort oder das Hotel spezifische Passwort eintragen müsste und da habe ich leider keine Ahnung wie das zu bewerkstelligen ist.

Ja ich weiß, dass ich in SQL eine Spalte zu Hotel hinzufüge wo ich das Passwort eintrage kann gibt es eine Möglichkeit das es Automatisch generiert wird ?

Das Super Passwort generiere ich in der Spalte Passwörter oder in der Allgemeinen Database?

LG
 
T

temi

Top Contributor
Eine ganz normale Spalte hinzufügen ist natürlich kein Problem.

Ich habe in Java mein GUI mit Buttons, wo ich ein Hotel anlegen kann und laut der Angabe müsste ich wenn ich ein Hotel anlegen möchte ein Fenster öffnen wo ich das Super Passwort oder das Hotel spezifische Passwort eintragen müsste und da habe ich leider keine Ahnung wie das zu bewerkstelligen ist.

Ja ich weiß, dass ich in SQL eine Spalte zu Hotel hinzufüge wo ich das Passwort eintrage kann gibt es eine Möglichkeit das es Automatisch generiert wird ?

Das Super Passwort generiere ich in der Spalte Passwörter oder in der Allgemeinen Database?
Letztendlich legst du ja fest, wie die Passworte aussehen. Im einfachsten Fall wären die Passworte also einfach ein String, der in der DB gespeichert ist, was man so natürlich niemals machen würde. Stattdessen würde man aus dem Passwort-String einen (kryptografischen) Hashwert generieren und diesen in der DB speichern. Bei der Abfrage des Passwortes wird dann später der Hashwert des eingegebenen Passwortes mit dem in der DB gespeicherten verglichen.

Beim Anlegen eines Hotels könntest du also einfach den "Superuser" (der das Hotel anlegt) nach dem neuen Passwort für das neue Hotel fragen und verfahren, wie oben beschrieben.

Ein zufällig generiertes Passwort (geht auch) müsstest du dem User wenigstens mitteilen, sonst kann sich ja niemand anmelden.

Die Passwort-Hashes der einzelnen Hotels könnten in der Hotel-Tabelle als Spalte gespeichert werden. Dann brauchst du halt eine separate Tabelle in der das Superuser-Passwort gespeichert ist, weil der Superuser ist ja kein Hotel. Oder du hast eine separate Tabelle User - Passwort, in der einmal der Superuser gespeichert ist und auch die weiteren Hotel-Passworte.
 
Zuletzt bearbeitet:
D

Dukel

Top Contributor
Für diese Aufgabe würde ich ggf. das SuperUser-Passwort im Quellcode (gehasht, wie alle anderen Passwörter) hinterlegen. Produktiv würde ich da eher eine "Konfiguration" DB / Tabelle erstellen und dort diverse Einstellungen hinterlegen.
Auch die Benutzerverwaltung (AD, OAuth,...) an einen externen Dienst "übergeben" ist eine gute Idee.
 
P

Paraba

Mitglied
Vielen Dank für die vielen Ideen jedoch leider schaffe ich sie nicht richtig zu implementieren/umzusetzen.
 
P

Paraba

Mitglied
Die Aufgabe muss in SQL und JAVA gemacht werden, da ich jetzt schon ziemlich verzweifelt bin und es nicht hinkriege frage ich ob mir jemand hilft und mit mir über den Code geht und mir hilft das zu lösen muss das morgen abgegeben sonst werde ich negativ beurteilt.

Habe alle meines Studienkollegen schon um Hilfe gefragt aber leider kann diesen Auftrag keiner lösen.
 
Zuletzt bearbeitet:
P

Paraba

Mitglied
Das wäre der SQL.





USE master;

GO

IF (exists(SELECT * FROM sys.sysdatabases WHERE name='Tourist_Office'))
BEGIN
ALTER DATABASE Tourist_Office SET single_user WITH ROLLBACK IMMEDIATE;
DROP DATABASE Tourist_Office;
END
GO

CREATE DATABASE Tourist_Office

GO

CREATE LOGIN TestUser_SP WITH PASSWORD = 'TestPasswort_SP';

GO

USE Tourist_Office

CREATE USER TestUser_SP FOR LOGIN TestUser_SP

EXEC sp_addrolemember db_datareader, TestUser_SP
EXEC sp_addrolemember db_datawriter, TestUser_SP

GO


USE Tourist_Office;

CREATE TABLE Hotel (

id INT PRIMARY KEY,
category VARCHAR(5) CHECK (category IN ('*','**', '***', '****', '*****' )),
name VARCHAR(max),
owner VARCHAR(max),
contact VARCHAR(max),
address VARCHAR(max),
city VARCHAR(max),
cityCode VARCHAR(max),
phone VARCHAR(max),
noRooms INT CHECK (noRooms > 0),
noBeds INT CHECK (noBeds > 0)
)


CREATE TABLE Occupancy (
HotelID INTEGER NOT NULL,
FOREIGN KEY (HotelID) REFERENCES Hotel ( id ),
year INT CHECK (year >= 2015),
month INT CHECK (month BETWEEN 1 AND 12),
usedRooms INT CHECK (usedRooms >= 0),
usedBeds INT CHECK (usedBeds >= 0),
noRooms INT CHECK (noRooms > 0),
noBeds INT CHECK (noBeds > 0)

)

ALTER TABLE HOTEL
ADD familyFriendly BIT
ALTER TABLE HOTEL
ADD Spa BIT
ALTER TABLE HOTEL
ADD Dog BIT
ALTER TABLE HOTEL
ADD Fitness BIT





INSERT INTO Hotel(id, category, name) VALUES (331,'***','Gasthof Hotel Raymund' )
INSERT INTO Hotel VALUES (640,'**','Privatzimmer Familie Wagner','Rüben von Rübenfeld Perine', 'Wanac Tamea', 'Wienerstraße 33', 'Pöchlarn', 3380, 6412446,11, 1 )
Delete from Hotel
INSERT INTO Hotel VALUES (110,'****','Ferienhäuser','Dionysius Jawad', 'Rubas Theminh', '3512 Unterbergern', 'Unterbergern', 3512, 8897234,46, 40 )
UPDATE hotel SET noBeds = (noBeds+2) WHERE category like '***'
UPDATE hotel SET noRooms = (noRooms+2) WHERE category like '***'
Select * into hotel_2020_05_06 from Hotel
select * from Hotel where name like 'Test'
Select * from Occupancy WHERE year = 2015 AND month = 11
Select * from Occupancy



select * from hotel_2020_05_06
Select * from hotel
Select * into occupancy_2020_06_05 from Occupancy
 
mihe7

mihe7

Top Contributor
Code-Tags: die drei Punkte neben dem Smiley, dort Code, anschließend die Sprache (Java/SQL) auswählen und ins Textfeld einfügen. Macht jetzt beim SQL nicht das große Problem, beim Java-Code bitte auf jeden Fall.
 
P

Paraba

Mitglied
Ich kann höchstens die ganze Java Datei als ZIP hochladen da der Code hunderte Zeilen hat.
 
P

Paraba

Mitglied
Mihe nein da ich nicht genau weiß was du meinst. Tut mir leid kleine Angewohnheit von mir JAVA Java.

Leider ist die ZIP-Datei zu groß zum hochladen.
 
mihe7

mihe7

Top Contributor
P

Paraba

Mitglied
Mein Lektor verlangt es das es in der Datenbank vorhanden ist soweit ich weiß.

Wie mache ich das? Haben bis jetzt immer nur Archive File Exportiert.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Mein Lektor verlangt es das es in der Datenbank vorhanden ist soweit ich weiß.
Wissen wir :)

Um mal den Hintergrund der Frage zu erklären: deine Aufgabe ist relativ groß, besteht aber aus mehreren verschiedenen Teilen:
* Passwort neu anlegen
* Den Nutzer bei Änderungen nach dem Passwort fragen
* Das Passwort (oder den Hash aus der Datenbank laden
* Das eingegebene Passwort mit dem gespeicherten vergleichen
* ...

Dein Ansatz ist bisher "alles auf einmal", was dann nur dazu führt, dass du vor dem Problem stehst, wie man das alles auf einmal löst.

@mihe7 will darauf hinaus, dass du die Dinge einzeln lösen kannst, und dann nur relativ kleine, einfach zu erledigende Häppchen, lösen musst, zB erstmal nur, dass der Nutzer ein Passwort eingibt – das funktioniert dann ganz ohne irgendwelchen Datenbankkram oder überhaupt das erstellen eines Passworts.
 
P

Paraba

Mitglied
Das wirkliche Problem das ich habe das ich spezifisch dazu nichts finden konnte und keine Ahnung habe wie man lösen könnte, da ich mich nicht einlesen kann und wegen Corona der Unterricht weniger lehrreich war.

Eine normale Passwort Eingabe kriege ich hin jedoch alles weiter übersteigt meine Kenntnis, da IT nur eine Nebenrolle in meinem Studiengang hat.

Vielen Dank auf alle Fälle das ihr euch die Zeit nehmt obwohl ich eher wenig Kenntnis habe.

Wie exportiere ich den Quelltext der ganzen Klassen oder muss ich das einzeln machen?
 
mihe7

mihe7

Top Contributor
Wie exportiere ich den Quelltext der ganzen Klassen oder muss ich das einzeln machen?
In der Regel solltest Du ein Verzeichnis src haben, indem sich die Quelldateien befinden. Probier mal, ob das schon reicht, sonst sind ggf. noch Ressourcen wie Bilder enthalten, die Du noch rausschmeißen kannst.
 
P

Paraba

Mitglied
Das wäre der Code denn wir vom Lektor bekommen haben und verbessert haben.
 

Anhänge

  • CodeJava.zip
    109,9 KB · Aufrufe: 7
P

Paraba

Mitglied
Könnte mir jetzt einer Helfen bei meinem Problem, da mir leider die Zeit davonrennt. Ich besitze leider nicht den Skill um die Aufgabe richtig zu lösen. Natürlich erwarte ich nicht das jemand das aus Mitleid macht. Man kann natürlich über eine Bezahlung die sich im Rahmen hält sprechen.
 
T

TM69

Bekanntes Mitglied
Guten Tag Liebe Community,

habe Probleme bei einer Implementierung von User Management, da ich leider im Internet nichts dazu finde was mir weiterhelfen konnte richte ich mich nun an euch.

Aufgabenstellung:

There should be some user management implemented for the program:

New hotels can only be added when a super user password (which is stored in the database) is known.

Each hotel has its own password that is defined when the hotel is created.

The information about a hotel can only be changed if the super user password or the password of the hotel is known.

The same applies to the occupational information about a hotel.

Habe die Datenbank und den Java Coder fertig jedoch habe ich leider keine Ahnung wie ich ein Super User in SQL anlege und den danch in JAVA nutzen kann.

Freue mich über Antworten Hilfestellungen oder Links zu Informationen.

LG
Also die einfachste Arte ist es ein zusätzliches Feld z.B. (Tinyint 1) "is_superuser" in der Tabelle zu definieren und hierauf abzufragen. Ein Superadmin direkt per SQL anlegen erfolgt durch
Code:
GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'localhost' WITH GRANT OPTION;;
s. https://dev.mysql.com/doc/refman/8.0/en/grant.html
Oracle
s. https://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqljgrant.html

Ob dieses allerdings wirklich alle Datenbanken machen, ist mir jetzt nicht bekannt. Müsste man mal Nachschlagen, da einige Datenbanken doch ihre Eigenarten haben.

Das erkennt man doch so nicht, wenn dann bitte untereinander und in Courier, außerdem lassen sich die Unterschiede fett hervorheben:
Java
JAVA
Also das habe ich verstanden, ich verstehe nur nicht wo Mihe einen Inhaltlichen Unterschied zwischen Java und JAVA sieht. :D
 
P

Paraba

Mitglied
Vielen Dank, da alle nun so gut drauf sind gibt es eine Möglichkeit meine Aufgabe zu lösen? :p Habe morgen noch Zeit für die Fertigstellung. Mir fehlt leider einfach die Fähigkeit Gedankengänge in SQL/Java umzusetzen ich verstehe was ein Code kann jedoch selber zu schreiben fällt mir schwer ;)
 
T

TM69

Bekanntes Mitglied
Vielen Dank, da alle nun so gut drauf sind gibt es eine Möglichkeit meine Aufgabe zu lösen? :p Habe morgen noch Zeit für die Fertigstellung. Mir fehlt leider einfach die Fähigkeit Gedankengänge in SQL/Java umzusetzen ich verstehe was ein Code kann jedoch selber zu schreiben fällt mir schwer ;)
Hier findest du z.B. eine Beschreibung, wie man mit Java und Datenbanken (SQL Statements absetzten) arbeiten kannst.

 
P

Paraba

Mitglied
SQL:
CREATE LOGIN Super_User WITH PASSWORD = 'SUPERUSER';

GO

USE Tourist_Office

CREATE USER SUPER_USER FOR LOGIN SUPER_USER

EXEC sp_addrolemember db_datareader, SUPER_USER
EXEC sp_addrolemember db_datawriter, SUPER_USER

GO
// Habe den Super User mal so angelegt

CREATE TABLE Hotel (
   
    id INT PRIMARY KEY,
    category VARCHAR(5) CHECK (category IN ('*','**', '***', '****', '*****' )),
    name VARCHAR(max),
    owner VARCHAR(max),
    contact VARCHAR(max),
    address VARCHAR(max),
    city VARCHAR(max),
    cityCode VARCHAR(max),
    phone VARCHAR(max),
    noRooms INT  CHECK (noRooms > 0),
    noBeds INT  CHECK (noBeds > 0),
    passwordHotels VARCHAR (max)
)

Dann in die Tabelle Hotels eine Spalte Passwort wenn ich ein Hotel anlege ein Passwort hinzufügen kann


Das sollte als die SQL Portion reichen oder übersehe ich etwas ?

Ein Passwort GUI kann ich erstellen in Java. Aber wie frage ich das Hotel Password oder Super User Passwort in Java ab?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kr0e User management system Allgemeine Java-Themen 2
L Super User via Processbuilder (Linux) Allgemeine Java-Themen 3
NicoDeluxe Logfile pro User / Thread Allgemeine Java-Themen 7
W Java Telegram Bot - Eingabe durch User Allgemeine Java-Themen 2
T Loginname von User an PC im Netzwerk holen Allgemeine Java-Themen 2
K Jar/DLL Abhängigkeiten durch User angeben lassen Allgemeine Java-Themen 6
VfL_Freak JDK installieren System-Property "user.dir" Allgemeine Java-Themen 6
Thallius Konzeptproblem User-Interface Allgemeine Java-Themen 5
Thallius User-Settings: Wie handelt ihr das? Allgemeine Java-Themen 4
Bananabert Swing jtree : image als user object Allgemeine Java-Themen 2
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
S Random Passwort für den User + Hashen Allgemeine Java-Themen 6
Guybrush Threepwood Kein user.home unter Windows8 Allgemeine Java-Themen 7
T User Verwaltung mit JPA Allgemeine Java-Themen 2
B Java FTP (common net - user anlegen) Allgemeine Java-Themen 2
C Input/Output Beste Möglichkeit für user non-readable Datei Allgemeine Java-Themen 7
D Daten eines User auslesen. Allgemeine Java-Themen 5
R Welches User-Verzeichnis wählen für Configurationsdateien - Windows Allgemeine Java-Themen 2
R Windows - User Passwort ändern Allgemeine Java-Themen 2
B User-Input aus Zahlen und Operatoren - beste Umsetzung? Allgemeine Java-Themen 8
H blinde MAC User Allgemeine Java-Themen 15
H user.dir + verknüpfung Allgemeine Java-Themen 5
S "Guessed User name" bei Tomcat belegen Allgemeine Java-Themen 2
G Java Anwendung für Multi-User Allgemeine Java-Themen 2
K Chatengine User auf Chatbot Allgemeine Java-Themen 3
S Änderung an Proberties datei an alle User weitergeben? Allgemeine Java-Themen 7
P URL mit htaccess in Explorer öffnen (ohne user-passwort) Allgemeine Java-Themen 6
K JUnit 4 User Interaktion Allgemeine Java-Themen 7
P System.getProperty("user.dir") Allgemeine Java-Themen 10
B User Login: JPasswordField + JPasswordField_wdh vergleichen Allgemeine Java-Themen 2
J Suse + Tomcat + Sysdeo Plugin: Tomcat als user starten Allgemeine Java-Themen 2
T User-Kennung im Source hinterlegen? Allgemeine Java-Themen 4
T System.getProperty("user.home") Allgemeine Java-Themen 12
S Simple User Interface Frage Allgemeine Java-Themen 13
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
D NT User auslesen aus windows 2000 Allgemeine Java-Themen 2
A Synchronisation Datenquelle und Anwendung (Multi-User) Allgemeine Java-Themen 7
D System.getProperty("user.dir") ? Allgemeine Java-Themen 1
H Zugriff auf statische Methode durch mehrere User Allgemeine Java-Themen 19
J User Klasse in den Vector, Object Klasse wieder raus... Allgemeine Java-Themen 4
S Java-Task-Management-Tool für Windows und Mac selber programmieren Allgemeine Java-Themen 4
W IDEA IntelliJ Build-Management-Tool selbst programmieren Allgemeine Java-Themen 2
S Java Servlet Cache + Cache-Management Allgemeine Java-Themen 14
N Cashbook Management Testen Allgemeine Java-Themen 7
A Source-Management bei Kunden-Anpassungen Allgemeine Java-Themen 5
G Plugin Management Allgemeine Java-Themen 2
K Multithreading plattform übergreifend? Allgemeine Java-Themen 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben