app/controllers/UserController.scala (24 lines of code) (raw):
package controllers
import auth.AccessScopes.UserReadSelfSecure
import auth.AuthorisedAction
import com.gu.identity.auth.AccessScope
import model.User
import model.User.writes
import play.api.*
import play.api.libs.json.Json
import play.api.libs.json.Json.toJson
import play.api.mvc.*
import services.UserService
import scala.concurrent.ExecutionContext
class UserController(
val controllerComponents: ControllerComponents,
authorisedAction: List[AccessScope] => AuthorisedAction,
userService: UserService
)(implicit ex: ExecutionContext)
extends BaseController {
def me(): Action[AnyContent] = authorisedAction(List(UserReadSelfSecure)).async(request => {
userService
.fetchUserByOktaId(request.userInfo.oktaId)
.map(_.map(user => Ok(toJson(user)(writes.me))).getOrElse(NotFound))
})
}