Go service to allow generating and validating token. Admin can generate tokens, list tokens and invalidating tokens. There is a public api(throttled) which allows checking if token is valid or not This service allows generating invite token by admin. Invite token can validated. Functionalities:
- For Admin:
- Allows generating token(token cached in Redis)
- Allows getting details of token
- Allows listing tokens
- Allows deactivating token
- Requests are validated in admin routes(via api key validation)
- for Public
- Allows validating token(done via redis)
- Request throttled for public routes
├── api
│ ├── controller
│ ├── repository
│ ├── routes
│ └── service
├── bootstrap
├── cron
├── docs
│ └── swagger.yaml
├── img
├── lib
├── main.go
├── makefile
├── middlewares
└── models
- install MySql Or run mysql docker image
docker run \ --detach \ --name=mysql \ --env="MYSQL_ROOT_PASSWORD=admin" \ --env="MYSQL_USER=admin" \ --env="MYSQL_PASSWORD=admin" \ --env="MYSQL_DATABASE=test" \ --publish 3306:3306 \ mysql/mysql-server:latest
- install Redis Or run Redis docker image
docker run \ -d --name redis \ -p 6379:6379 \ redis/redis-stack:latest
- setup
.env
fileAPP_PORT=8080 DB_USERNAME=admin DB_PASSWORD=admin DB_PORT=3306 DB_HOST=localhost DB_NAME=test REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= API_KEY=test API_RATE=10
- run app:
make run
Admin api have authentication. API key based authentication for these routes. Add API_KEY
value in .env
file and supply it as api-key
header field of each admin request
curl --location --request GET '<endpoint>/api/v1/admin/token' \
--header 'api-key: <api_key>'
API documentation is build with swagger. To run api documentation execute following command:
make doc