Browse Source

First version to repo

main
ddangelorb 3 years ago
parent
commit
8e27b74da9
  1. 1
      .gitignore
  2. 95
      README.md
  3. 33
      pom.xml

1
.gitignore

@ -21,3 +21,4 @@
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
/target/

95
README.md

@ -1,2 +1,97 @@
# wpdAuth
The authenticator for the Waterproofing Data (WPD) Work Packages
## How this project was created
This project was initially created using the [spring initializr](https://start.spring.io/), together with the following dependencies:
- [Lombok](https://projectlombok.org/). Java annotation library which helps to reduce boilerplate code.
- [Spring Web](https://spring.io/guides/gs/serving-web-content/). Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container.
- [Spring Data JPA](https://spring.io/projects/spring-data-jpa). Persist data in SQL stores with Java Persistence API using Spring Data and Hibernate.
- [PostgreSQL Driver](https://jdbc.postgresql.org/). A JDBC and R2DBC driver that allows Java programs to connect to a PostgreSQL database using standard, database independent Java code.
- [Spring Security](https://spring.io/projects/spring-security). Highly customizable authentication and access-control framework for Spring applications.
# Dependencies
- [Maven Project](https://maven.apache.org/)
- [Java 16](http://openjdk.java.net/projects/jdk/16/)
- [Spring Boot 2.5.3](https://spring.io/projects/spring-boot/)
- [PostgreSQL](https://www.postgresql.org/) via [Homebrew preferably](https://formulae.brew.sh/formula/postgresql)
# How to setup this project
Once the dependencies are properly installed, follow the steps below:
- Clone the project locally
```console
$ git clone https://github.com/IGSD-UoW/wpdAuth.git
$ cd wpdAuth
```
- Start the PostgreSQL and run the scripts to create the database and get the load data.
```console
$ brew services start postgresql
$ psql postgres
postgres=# \conninfo
postgres=# CREATE DATABASE wpdauth;
postgres=# \c wpdauth
wpdauth=# \i db/ddl.sql
wpdauth=# \i db/sys_config.sql
wpdauth=# create user uwpdauth;
wpdauth=# alter user uwpdauth with encrypted password '<your really secure password>';
wpdauth=# GRANT USAGE ON SCHEMA public TO uwpdauth;
wpdauth=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO uwpdauth;
wpdauth=# GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO uwpdauth;
wpdauth=# grant all privileges on database wpdauth to uwpdauth;
wpdauth=# \q
```
- Install dependencies
```console
$ mvn install
```
- Run the project
```console
$ mvn spring-boot:run
```
# How to run this project
Navigate to `http://localhost:8080/swagger-ui.html` in your browser to check everything is working correctly. You can change the default port in the `application.properties` file.
- Make a GET request to `/users/me` to check you're not authenticated. You should receive a response with a `403` with an `Access Denied` message since you haven't set your valid JWT token yet.
```
$ curl -X GET http://localhost:8080/users/me
```
- Make a POST request to `/users/signin` with the default admin user we programatically created to get a valid JWT token
```
$ curl -X POST 'http://localhost:8080/users/signin?username=admin&password=admin'
```
- Add the JWT token as a Header parameter and make the initial GET request to `/users/me` again
```
$ curl -X GET http://localhost:8080/users/me -H 'Authorization: Bearer <JWT_TOKEN>'
```
- You should get a similar response to this one, meaning that you're now authenticated
```javascript
{
"id": 1,
"username": "admin",
"email": "admin@email.com",
"roles": [
"ROLE_ADMIN"
]
}
```

33
pom.xml

@ -50,6 +50,39 @@
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<!-- Automated JSON API documentation for API's built with Spring -->
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<!-- Generate beautiful documentation from a Swagger-compliant API. -->
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<!-- JSON Web Token Support -->
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<!-- Model Mapper -->
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.5</version>
</dependency>
</dependencies>
<build>

Loading…
Cancel
Save