Skip to content

Commit

Permalink
Update authentication controller
Browse files Browse the repository at this point in the history
- remove old authentication controller
- add two new authentication controllers
  • Loading branch information
kostobog committed May 3, 2024
1 parent f077962 commit 2d706a8
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 53 deletions.
53 changes: 0 additions & 53 deletions src/main/java/cz/cvut/kbss/analysis/controller/AuthController.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package cz.cvut.kbss.analysis.controller;

import cz.cvut.kbss.analysis.exception.EntityNotFoundException;
import cz.cvut.kbss.analysis.model.User;
import cz.cvut.kbss.analysis.security.SecurityConstants;
import cz.cvut.kbss.analysis.service.UserRepositoryService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.http.MediaType;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* API for getting basic user info.
* <p>
* Enabled when OIDC security is used.
*/
@ConditionalOnProperty(prefix = "security", name = "provider", havingValue = "oidc")
@RestController
@RequestMapping("/users")
public class OidcUserController {

private final UserRepositoryService userService;

public OidcUserController(UserRepositoryService userService) {
this.userService = userService;
}

@PreAuthorize("hasRole('" + SecurityConstants.ROLE_USER + "')")
@GetMapping(value = "/current", produces = MediaType.APPLICATION_JSON_VALUE)
public User getCurrent() {
return userService.getCurrentUser();
}

@PreAuthorize("hasRole('" + SecurityConstants.ROLE_ADMIN + "') or #username == authentication.name or " +
"hasRole('" + SecurityConstants.ROLE_USER + "')")
@GetMapping(value = "/{username}", produces = MediaType.APPLICATION_JSON_VALUE)
public User getByUsername(@PathVariable("username") String username) {
return userService.findByUsername(username).orElseThrow(() ->
EntityNotFoundException.create("User", username));
}

}
30 changes: 30 additions & 0 deletions src/main/java/cz/cvut/kbss/analysis/controller/UserController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package cz.cvut.kbss.analysis.controller;


import cz.cvut.kbss.analysis.model.User;
import cz.cvut.kbss.analysis.security.SecurityConstants;
import cz.cvut.kbss.analysis.service.UserRepositoryService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.http.MediaType;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@ConditionalOnProperty(prefix = "security", name = "provider", havingValue = "internal", matchIfMissing = true)
@RestController
@RequestMapping("/users")
public class UserController {
private final UserRepositoryService userService;

public UserController(UserRepositoryService userService) {
this.userService = userService;
}

@PreAuthorize("hasRole('" + SecurityConstants.ROLE_USER + "')")
@GetMapping(value = "/current", produces = MediaType.APPLICATION_JSON_VALUE)
public User getCurrent() {
return userService.getCurrentUser();
}

}

0 comments on commit 2d706a8

Please sign in to comment.