An OIDC compliant extensible user authentication and authorization service that includes key features such as passwordless authentication and attribute based access control (ABAC). It is written in [Nest JS](https://github.com/nestjs/nest) & using Fusion Auth as the underlying service for all User Management related tasks.
[Nest](https://github.com/nestjs/nest) service for managing eSamwad Users.
## Features
- CRUD support for respective Fusion Auth Applications
- Authentication(Username/Password combo) for Fusion Auth Users
- Passwordless (OTP based) authentication
- RBAC support for the applications (Android, React Admin, etc.)
- CRUD supporting creation/updation of records on 3rd party Hasura using Generic Config
## Installation
## Development
#### Installation
```bash
$ yarn install
...
...
@@ -17,7 +24,7 @@ $ yarn install
_Note_: This project is built on VSCode and would be developed only with this IDE in mind. The [.vscode directory](./.vscode) will be kept updated with all the VSCode magic 🧙♂️.
## Running the app
#### Running the app
```bash
# development
...
...
@@ -33,6 +40,21 @@ $ yarn start:debug
$ yarn start:prod
```
## Deployment
You can use docker image directly for production environment setup. A sample `docker-compose.yml` file should look like:
Note: In variable `APP_application_id`, **"APP_"** is the prefix and **"application_id"** is the UUID of Fusion Auth application with hyphen("-") replaced with underscore("_"). E.g. if application id is: `0000-0000-0000-0000` then the variable name must be: `APP_0000_0000_0000_0000`
| `host` | Fusion Auth Host. e.g. http://localhost:9011 or http://example.com |
| `apiKey` | Fusion Auth API key to use for the Fusion Auth APIs being access via User Service. This key will be ignored if header `Authorization` header is passed in the request. |
| `encryption.enabled` | Boolean flag to enabled/disable encryption. |
| `encryption.key` | Encryption key. Must be passed if `encryption.enabled` is `true`. |
| `hasura.graphql_url` | Hasura Graphql URL for custom mutation calls to be made on hit of certain APIs. |
| `hasura.admin_secret` | Hasura Admin Secret. |
| `hasura.mutations` | A JSON object containing `key: value`; where `key` is the name of mutation & `value` contains the query/mutation for the Graphql call. |