added keycloak user

This commit is contained in:
2024-06-11 12:13:24 +02:00
parent 350e1a8a43
commit 018285c109
2 changed files with 79 additions and 0 deletions

View File

@@ -1,6 +1,8 @@
package de.anxietyprime.swajodel; package de.anxietyprime.swajodel;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;

View File

@@ -0,0 +1,77 @@
package de.anxietyprime.swajodel;
import org.springframework.http.HttpStatus;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.server.ResponseStatusException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class User {
static public String getUUID () {
return SecurityContextHolder.getContext().getAuthentication().getName();
}
static public Long getUserID () {
String uuid = SecurityContextHolder.getContext().getAuthentication().getName();
Long id = -1L;
// DB connection and statement
Connection c;
PreparedStatement stmt;
// try to get data from db
try {
// check for the driver
Class.forName("org.postgresql.Driver");
// get the connection with credentials from env variables
c = DriverManager
.getConnection("jdbc:postgresql://"+
System.getenv("POSTGRES_IP")+"/"+System.getenv("POSTGRES_DB"),
System.getenv("POSTGRES_USER"), System.getenv("POSTGRES_PASSWORD"));
// disable auto commits
c.setAutoCommit(false);
// create a new statement
stmt = c.prepareStatement("SELECT id FROM users WHERE username = (?)");
stmt.setObject(1, uuid);
// insert post and get its id
ResultSet rs = stmt.executeQuery();
// check if there is a parent
if (!rs.next()) {
// create a new statement
stmt = c.prepareStatement("INSERT INTO users(username, password) VALUES (?, 'unused') RETURNING id");
// fill statement
stmt.setObject(1, uuid);
// execute statement
rs = stmt.executeQuery();
// commit the changes
c.commit();
rs.next();
}
id = rs.getLong("id");
// close all connections to db
stmt.close();
c.close();
}
// else log the error
catch ( Exception e ) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
throw new ResponseStatusException(HttpStatus.SERVICE_UNAVAILABLE, "Database is offline");
}
return id;
}
}