-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' into chore/mobile/refactor
- Loading branch information
Showing
33 changed files
with
1,487 additions
and
83 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
name: Build 🏗️ and Deploy Python App 🛳️ | ||
|
||
on: | ||
push: | ||
branches: ["develop"] | ||
paths: [ | ||
"python-code/**", | ||
"models/**", | ||
".github/workflows/deploy-python.yml" | ||
] | ||
|
||
workflow_dispatch: | ||
|
||
defaults: | ||
run: | ||
working-directory: python-code | ||
|
||
jobs: | ||
build: | ||
name: 🏗️ Build | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
matrix: | ||
python-version: [3.8, 3.9, 3.11] | ||
|
||
steps: | ||
- name: ⬇️ Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: 🏗 Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: 📦 Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install -r requirements.txt | ||
- name: ✅ Build completed | ||
run: echo "Build completed successfully!" | ||
|
||
build-push-docker: | ||
name: 🐋 Build and Push Docker Image | ||
runs-on: ubuntu-latest | ||
needs: build | ||
|
||
steps: | ||
- name: ⬇️ Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: 🏗 Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: 🏗 Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: 🧑💻 Login to DockerHub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
|
||
- name: 🐳 Build and push Docker image | ||
uses: docker/build-push-action@v5 | ||
with: | ||
context: python-code | ||
file: python-code/Dockerfile | ||
platforms: linux/amd64,linux/arm64 | ||
push: true | ||
tags: ${{ secrets.DOCKER_USERNAME }}/attendance-model:latest | ||
|
||
deploy: | ||
name: 🛳️ Deploy Python App 🐳 | ||
runs-on: ubuntu-latest | ||
needs: build-push-docker | ||
|
||
steps: | ||
- name: ⬇️ Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: 🪷 Copy files to VM | ||
uses: appleboy/[email protected] | ||
with: | ||
host: ${{ secrets.VM_IP }} | ||
username: ${{ secrets.VM_USERNAME }} | ||
key: ${{ secrets.VM_SSH_KEY }} | ||
source: "python-code/docker-compose.yml,models/attendance_model" | ||
target: "/home/${{ secrets.VM_USERNAME }}/attendance-model" | ||
|
||
- name: 🚀 SSH to VM | ||
uses: appleboy/ssh-action@master | ||
with: | ||
host: ${{ secrets.VM_IP }} | ||
username: ${{ secrets.VM_USERNAME }} | ||
key: ${{ secrets.VM_SSH_KEY }} | ||
script: | | ||
cd /home/${{ secrets.VM_USERNAME }}/attendance-model/python-code | ||
mv /home/${{ secrets.VM_USERNAME }}/attendance-model/models/attendance_model /home/${{ secrets.VM_USERNAME }}/attendance-model/python-code | ||
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin | ||
DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }} docker compose -f docker-compose.yml down | ||
DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }} docker compose -f docker-compose.yml pull | ||
DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }} docker compose -f docker-compose.yml up -d |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,6 +10,10 @@ The auth endpoint is used to authenticate a user and get a token to access the A | |
- [Login-Admin](#login-admin) | ||
- [Login-Mobile](#login-mobile) | ||
- [Login-Admin-Mobile](#login-admin-mobile) | ||
- [Login-Admin-Begin](#login-admin-begin) | ||
- [Login-Admin-Finish](#login-admin-finish) | ||
- [Register-Admin-Begin](#register-admin-begin) | ||
- [Register-Admin-Finish](#register-admin-finish) | ||
- [Register](#register) | ||
- [Resend OTP](#resend-otp) | ||
- [Verify OTP](#verify-otp) | ||
|
@@ -163,6 +167,132 @@ The authentication endpoints are used to register, login, login-admin, logout, a | |
``` | ||
**if you use this endpoint, you will get back an auth token that you can use to access other endpoints. Ensure to intilialise it in the Auth header** | ||
|
||
### Login-Admin-Begin | ||
|
||
This endpoint is used for beginning the authentication process using webauthn for admin users. | ||
|
||
- **URL** | ||
|
||
`/auth/login-admin-begin` | ||
|
||
- **Method** | ||
|
||
`POST` | ||
|
||
- **Success Response** | ||
|
||
- **Code:** 200 | ||
- **Content:** `{ "status": 200, "message": "WebAuthn login initiated", "data": {"options": {"some data"}, "sessionData": {"some data"}, "uuid": "some uuid"}, }` | ||
|
||
- **Error Response** | ||
|
||
- **Code:** 400 | ||
- **Content:** `{"status": 400, "message": "Invalid email address": {"code": "INVALID_REQUEST_PAYLOAD","message": "Expected a valid format for email address": {}}}` | ||
|
||
- **Error Response** | ||
|
||
- **Code:** 500 | ||
- **Content:** `{"status": 500, "message": "Internal Server Error","error": {"code": "INTERNAL_SERVER_ERROR","message": "Internal Server Error","details": {}}}` | ||
|
||
**_Example json to send:_** | ||
|
||
```json copy | ||
{ | ||
"email": "[email protected]" | ||
} | ||
|
||
``` | ||
|
||
### Login-Admin-Finish | ||
|
||
This endpoint is used for finishing the authentication process using webauthn for admin users. | ||
|
||
- **URL** | ||
|
||
`/auth/login-admin-finish/${uuid}` // the uuid is gotten from the response of the login-admin-begin endpoint | ||
|
||
- **Method** | ||
|
||
`POST` | ||
|
||
- **Success Response** | ||
|
||
- **Code:** 200 | ||
- **Content:** `{ "status": 200, "message": "Successful login!", "data": {}, }` | ||
|
||
- **Error Response** | ||
|
||
- **Code:** 400 | ||
- **Content:** `{"status": 400, "message": "Expected id field": {"code": "INVALID_REQUEST_PAYLOAD","message": "Expected an id field": {}}}` | ||
|
||
- **Error Response** | ||
|
||
- **Code:** 500 | ||
- **Content:** `{"status": 500, "message": "Internal Server Error","error": {"code": "INTERNAL_SERVER_ERROR","message": "Internal Server Error","details": {}}}` | ||
|
||
### Register-Admin-Begin | ||
|
||
This endpoint is used for beginning the authentication process using webauthn for admin users who have not setup their webauthn credentials yet. | ||
|
||
- **URL** | ||
|
||
`/auth/register-admin-begin` | ||
|
||
- **Method** | ||
|
||
`POST` | ||
|
||
- **Success Response** | ||
|
||
- **Code:** 200 | ||
- **Content:** `{ "status": 200, "message": "WebAuthn login initiated", "data": {"options": {"some data"}, "sessionData": {"some data"}, "uuid": "some uuid"}, }` | ||
|
||
- **Error Response** | ||
|
||
- **Code:** 400 | ||
- **Content:** `{"status": 400, "message": "Invalid email address": {"code": "INVALID_REQUEST_PAYLOAD","message": "Expected a valid format for email address": {}}}` | ||
|
||
- **Error Response** | ||
|
||
- **Code:** 500 | ||
- **Content:** `{"status": 500, "message": "Internal Server Error","error": {"code": "INTERNAL_SERVER_ERROR","message": "Internal Server Error","details": {}}}` | ||
|
||
**_Example json to send:_** | ||
|
||
```json copy | ||
{ | ||
"email": "[email protected]" | ||
} | ||
|
||
``` | ||
|
||
### Register-Admin-Finish | ||
|
||
This endpoint is used for finishing the authentication process using webauthn for admin users who have not setup their webauthn credentials yet. | ||
|
||
- **URL** | ||
|
||
`/auth/register-admin-finish/${uuid}` // the uuid is gotten from the response of the register-admin-begin endpoint | ||
|
||
- **Method** | ||
|
||
`POST` | ||
|
||
- **Success Response** | ||
|
||
- **Code:** 200 | ||
- **Content:** `{ "status": 200, "message": "Successful login!", "data": {}, }` | ||
|
||
- **Error Response** | ||
|
||
- **Code:** 400 | ||
- **Content:** `{"status": 400, "message": "Expected id field": {"code": "INVALID_REQUEST_PAYLOAD","message": "Expected an id field": {}}}` | ||
|
||
- **Error Response** | ||
|
||
- **Code:** 500 | ||
- **Content:** `{"status": 500, "message": "Internal Server Error","error": {"code": "INTERNAL_SERVER_ERROR","message": "Internal Server Error","details": {}}}` | ||
|
||
### Register | ||
|
||
- **URL** | ||
|
Oops, something went wrong.