USER Management in SQL übergreifend auf JAVA Programm

Diskutiere USER Management in SQL übergreifend auf JAVA Programm im Allgemeine Java-Themen Bereich.
P

Paraba

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

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

Dukel

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

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

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

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

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

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

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

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

Paraba

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:
D

Dukel

Dann poste hier doch was du hast. SQL und Java Quellcode (Mit Code Tags!)
 
P

Paraba

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

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

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

Paraba

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.
 
Thema: 

USER Management in SQL übergreifend auf JAVA Programm

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben