package demo;

import java.util.List;
import java.util.Map;

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OAuth2LoginMeController {

    @GetMapping("/")
    String home() {
        return "public home page";
    }

    @GetMapping("/api/me")
    Map<String, Object> me(@AuthenticationPrincipal OAuth2User user) {
        List<String> authorities = user.getAuthorities().stream().map(GrantedAuthority::getAuthority).sorted().toList();
        return Map.of("name", String.valueOf(user.getName()),
                      "principalType", user.getClass().getSimpleName(),
                      "authorities", authorities);
    }
}
