Ver Fonte

Add User API

Daniel Bohry há 1 ano atrás
pai
commit
f0cc2f8543

+ 3 - 1
src/main/java/com/danielbohry/authservice/api/AuthController.java

@@ -1,5 +1,7 @@
 package com.danielbohry.authservice.api;
 
+import com.danielbohry.authservice.api.dto.AuthenticationRequest;
+import com.danielbohry.authservice.api.dto.AuthenticationResponse;
 import com.danielbohry.authservice.service.auth.AuthService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -24,7 +26,7 @@ public class AuthController {
 
     @PostMapping("authenticate")
     public ResponseEntity<AuthenticationResponse> signin(@RequestBody AuthenticationRequest request) {
-        log.info("New signin for username [{}]", request.getUsername());
+        log.info("New signing for username [{}]", request.getUsername());
         var response = service.signin(request);
         return ResponseEntity.ok(response);
     }

+ 34 - 0
src/main/java/com/danielbohry/authservice/api/UserController.java

@@ -0,0 +1,34 @@
+package com.danielbohry.authservice.api;
+
+import com.danielbohry.authservice.api.dto.UserResponse;
+import com.danielbohry.authservice.domain.ApplicationUser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.core.context.SecurityContext;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@RestController
+@AllArgsConstructor
+@CrossOrigin
+@RequestMapping("api/users")
+public class UserController {
+
+    @GetMapping
+    public ResponseEntity<Object> get() {
+        SecurityContext context = SecurityContextHolder.getContext();
+        Object principal = context.getAuthentication().getPrincipal();
+        if (principal instanceof ApplicationUser user) {
+            return ResponseEntity.ok(new UserResponse(user.getId(), user.getUsername()));
+        }
+
+        return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
+    }
+
+}

+ 1 - 1
src/main/java/com/danielbohry/authservice/api/AuthenticationRequest.java → src/main/java/com/danielbohry/authservice/api/dto/AuthenticationRequest.java

@@ -1,4 +1,4 @@
-package com.danielbohry.authservice.api;
+package com.danielbohry.authservice.api.dto;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;

+ 1 - 1
src/main/java/com/danielbohry/authservice/api/AuthenticationResponse.java → src/main/java/com/danielbohry/authservice/api/dto/AuthenticationResponse.java

@@ -1,4 +1,4 @@
-package com.danielbohry.authservice.api;
+package com.danielbohry.authservice.api.dto;
 
 import lombok.Builder;
 import lombok.Data;

+ 15 - 0
src/main/java/com/danielbohry/authservice/api/dto/UserResponse.java

@@ -0,0 +1,15 @@
+package com.danielbohry.authservice.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserResponse {
+
+    private String id;
+    private String username;
+
+}

+ 2 - 1
src/main/java/com/danielbohry/authservice/config/SecurityConfig.java

@@ -30,7 +30,8 @@ public class SecurityConfig {
     public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
         http.csrf().disable()
                 .authorizeHttpRequests(requests -> requests
-                        .requestMatchers("/actuator/health", "/actuator/info", "/actuator/prometheus", "/api/**").permitAll()
+                        .requestMatchers("/actuator/health", "/actuator/info", "/actuator/prometheus", "/api/register", "/api/authenticate").permitAll()
+                        .requestMatchers("/api/users").authenticated()
                         .anyRequest().authenticated()
                 )
                 .sessionManagement(manager -> manager.sessionCreationPolicy(STATELESS))

+ 2 - 0
src/main/java/com/danielbohry/authservice/domain/ApplicationUser.java

@@ -2,6 +2,7 @@ package com.danielbohry.authservice.domain;
 
 import lombok.Builder;
 import lombok.Data;
+import org.springframework.data.mongodb.core.mapping.Document;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -11,6 +12,7 @@ import java.util.List;
 
 @Data
 @Builder
+@Document("users")
 public class ApplicationUser implements UserDetails {
 
     private String id;

+ 2 - 2
src/main/java/com/danielbohry/authservice/service/auth/AuthService.java

@@ -1,7 +1,7 @@
 package com.danielbohry.authservice.service.auth;
 
-import com.danielbohry.authservice.api.AuthenticationRequest;
-import com.danielbohry.authservice.api.AuthenticationResponse;
+import com.danielbohry.authservice.api.dto.AuthenticationRequest;
+import com.danielbohry.authservice.api.dto.AuthenticationResponse;
 import com.danielbohry.authservice.service.user.UserService;
 import lombok.AllArgsConstructor;
 import org.springframework.security.authentication.AuthenticationManager;