Auth Methoden überarbeitet

This commit is contained in:
Andreas Knuth 2024-08-26 11:58:30 +02:00
parent 74d5f92aba
commit f66badbfb1
2 changed files with 10 additions and 66 deletions

View File

@ -1,4 +1,4 @@
import { Controller, Get, Param, Put } from '@nestjs/common'; import { Controller, Get, Param } from '@nestjs/common';
import { AuthService } from './auth.service.js'; import { AuthService } from './auth.service.js';
@Controller('auth') @Controller('auth')
@ -18,23 +18,9 @@ export class AuthController {
getUser(@Param('userid') userId: string): any { getUser(@Param('userid') userId: string): any {
return this.authService.getUser(userId); return this.authService.getUser(userId);
} }
@Get('groups')
getGroups(): any {
return this.authService.getGroups();
}
@Get('user/:userid/groups') //e0811669-c7eb-4e5e-a699-e8334d5c5b01 -> aknuth
getGroupsForUsers(@Param('userid') userId: string): any {
return this.authService.getGroupsForUser(userId);
}
@Get('user/:userid/lastlogin') //e0811669-c7eb-4e5e-a699-e8334d5c5b01 -> aknuth @Get('user/:userid/lastlogin') //e0811669-c7eb-4e5e-a699-e8334d5c5b01 -> aknuth
getLastLogin(@Param('userid') userId: string): any { getLastLogin(@Param('userid') userId: string): any {
return this.authService.getLastLogin(userId); return this.authService.getLastLogin(userId);
} }
@Put('user/:userid/group/:groupid') //e0811669-c7eb-4e5e-a699-e8334d5c5b01 -> aknuth //
addUser2Group(@Param('userid') userId: string,@Param('groupid') groupId: string): any {
return this.authService.addUser2Group(userId,groupId);
}
} }

View File

@ -6,24 +6,19 @@ import urlcat from 'urlcat';
@Injectable() @Injectable()
export class AuthService { export class AuthService {
public async getAccessToken() { public async getAccessToken() {
const form = new FormData();
form.append('grant_type', 'password');
form.append('username', process.env.user);
form.append('password', process.env.password);
try { try {
const params = new URLSearchParams(); const params = new URLSearchParams();
params.append('grant_type', 'password'); params.append('grant_type', 'password');
params.append('username', process.env.user); params.append('username', process.env.KEYCLOAK_ADMIN_USER);
params.append('password', process.env.password); params.append('password', process.env.KEYCLOAK_ADMIN_PASSWORD);
const URL = `${process.env.host}${process.env.tokenURL}`; const URL = `${process.env.KEYCLOAK_HOST}${process.env.KEYCLOAK_TOKEN_URL}`;
const response = await ky const response = await ky
.post(URL, { .post(URL, {
body: params.toString(), body: params.toString(),
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded', 'Content-Type': 'application/x-www-form-urlencoded',
Authorization: 'Basic YWRtaW4tY2xpOnE0RmJnazFkd0NaelFQZmt5VzhhM3NnckV5UHZlRUY3', Authorization: process.env.KEYCLOAK_ADMIN_TOKEN,
}, },
}) })
.json(); .json();
@ -40,7 +35,7 @@ export class AuthService {
public async getUsers(): Promise<KeycloakUser[]> { public async getUsers(): Promise<KeycloakUser[]> {
const token = await this.getAccessToken(); const token = await this.getAccessToken();
const URL = `${process.env.host}${process.env.usersURL}`; const URL = `${process.env.KEYCLOAK_HOST}${process.env.KEYCLOAK_ADMIN_REALM}${process.env.REALM}${process.env.KEYCLOAK_USERS_URL}`;
const response = await ky const response = await ky
.get(URL, { .get(URL, {
headers: { headers: {
@ -53,20 +48,8 @@ export class AuthService {
} }
public async getUser(userid: string) { public async getUser(userid: string) {
const token = await this.getAccessToken(); const token = await this.getAccessToken();
const URL = urlcat(process.env.host, process.env.userURL, { userid }); const URLPATH = `${process.env.KEYCLOAK_ADMIN_REALM}${process.env.REALM}${process.env.KEYCLOAK_USER_URL}`;
const response = await ky const URL = urlcat(process.env.KEYCLOAK_HOST, URLPATH, { userid });
.get(URL, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: `Bearer ${token}`,
},
})
.json();
return response;
}
public async getGroups() {
const token = await this.getAccessToken();
const URL = `${process.env.host}${process.env.groupsURL}`;
const response = await ky const response = await ky
.get(URL, { .get(URL, {
headers: { headers: {
@ -78,22 +61,10 @@ export class AuthService {
return response; return response;
} }
public async getGroupsForUser(userid: string) {
const token = await this.getAccessToken();
const URL = urlcat(process.env.host, process.env.userGroupsURL, { userid });
const response = await ky
.get(URL, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: `Bearer ${token}`,
},
})
.json();
return response;
}
public async getLastLogin(userid: string) { public async getLastLogin(userid: string) {
const token = await this.getAccessToken(); const token = await this.getAccessToken();
const URL = urlcat(process.env.host, process.env.lastLoginURL, { userid }); const URLPATH = `${process.env.KEYCLOAK_ADMIN_REALM}${process.env.REALM}${process.env.KEYCLOAK_LASTLOGIN_URL}`;
const URL = urlcat(process.env.KEYCLOAK_HOST, URLPATH, { userid });
const response = await ky const response = await ky
.get(URL, { .get(URL, {
headers: { headers: {
@ -104,17 +75,4 @@ export class AuthService {
.json(); .json();
return response; return response;
} }
public async addUser2Group(userid: string, groupid: string) {
const token = await this.getAccessToken();
const URL = urlcat(process.env.host, process.env.addUser2GroupURL, { userid, groupid });
const response = await ky
.put(URL, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: `Bearer ${token}`,
},
})
.json();
return response;
}
} }