Skip to content

Commit

Permalink
Merge branch 'develop' into chore/mobile/refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
KamogeloMoeketse committed Aug 6, 2024
2 parents d031583 + 9f95d5d commit 7384ecf
Show file tree
Hide file tree
Showing 33 changed files with 1,487 additions and 83 deletions.
104 changes: 104 additions & 0 deletions .github/workflows/deploy-python.yml
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/scp-action@v0.1.5
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
130 changes: 130 additions & 0 deletions documentation/occupi-docs/pages/api-documentation/auth-usage.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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": "test@example.com"
}

```

### 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": "test@example.com"
}

```

### 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**
Expand Down
Loading

0 comments on commit 7384ecf

Please sign in to comment.