package org.ei.drishti.web.controller; import org.ei.drishti.common.domain.UserDetail; import org.ei.drishti.domain.DrishtiUser; import org.ei.drishti.web.security.DrishtiAuthenticationProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import static org.ei.drishti.web.HttpHeaderFactory.allowOrigin; import static org.springframework.http.HttpStatus.OK; @Controller public class UserController { private String drishtiSiteUrl; private DrishtiAuthenticationProvider drishtiAuthenticationProvider; @Autowired public UserController(@Value("#{drishti['drishti.site.url']}") String drishtiSiteUrl, DrishtiAuthenticationProvider drishtiAuthenticationProvider) { this.drishtiSiteUrl = drishtiSiteUrl; this.drishtiAuthenticationProvider = drishtiAuthenticationProvider; } @RequestMapping(method = RequestMethod.GET, value = "/authenticate-user") public ResponseEntity<HttpStatus> authenticateUser() { return new ResponseEntity<>(null, allowOrigin(drishtiSiteUrl), OK); } public DrishtiUser currentUser() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); return drishtiAuthenticationProvider.getDrishtiUser(authentication); } @RequestMapping(method = RequestMethod.GET, value = "/user-details") public ResponseEntity<UserDetail> userDetail(@RequestParam("anm-id") String anmIdentifier) { DrishtiUser user = drishtiAuthenticationProvider.getDrishtiUser(anmIdentifier); return new ResponseEntity<>(new UserDetail(user.getUsername(), user.getRoles()), allowOrigin(drishtiSiteUrl), OK); } }