## Working with the web GUI (Wicket) The web GUI is protected by OAuth 2 log in. Run the Docker Compose containers with `docker compose up` to start the authorization server to be able to log in. If you run SciPro in development mode (DEV profile) you will be able to log in as the "default" OAuth 2 user populated in the upper form. If you have other data in your database you will have to use the lower form and specify a valid username in the principal field. ## Working with the API The API is protected by OAuth 2 acting as a [resource server](https://www.oauth.com/oauth2-servers/the-resource-server/) verifying tokens using [token introspection](https://datatracker.ietf.org/doc/html/rfc7662). When developing it uses a locally running instance of an [authorization server](https://datatracker.ietf.org/doc/html/rfc6749#section-1.1) that is run inside [Docker](https://www.docker.com). It can be started with `docker compose -f docker-compose.yml up`. Since there is no frontend to interact with the authorization server there's a helper script in [GetToken.java](GetToken.java) that can be run directly with `java GetToken.java` to run through the authorization flow and get an access token. Once the token has been obtained go to the [Swagger UI](http://localhost:8080/api/swagger) to interact with the API. Click the "Authorize" button in the top right and paste the access token to log in. ## Code formatting This project uses [prettier-java](https://github.com/jhipster/prettier-java) to format all Java code. To reformat the code run `./mvnw validate frontend:npm@reformat -pl .`. Yes it's a mouthful but unfortunately the [prettier-maven-plugin](https://github.com/HubSpot/prettier-maven-plugin) does not work due to an [outstanding issue](https://github.com/HubSpot/prettier-maven-plugin/issues/79). The formatting is validated by CI, but you should do it beforehand with a simple `./mvnw verify -pl .`. ### Making IntelliJ format for you For this to work you also need to have [Node.js](https://nodejs.org) installed and configured under `Settings -> Language & Frameworks -> Node.js` and the file you're saving *must* be able to compile otherwise no formatting can be performed. Go to `Settings -> Language & Frameworks -> JavaScript -> Prettier` and then check `Automatic Prettier Configuration`, set `Run for files` to `**/*.{java}`, and finally check `Run on save`.