Skip to content

advpro-project/hoomgroom-authentication

Repository files navigation

HoomGroom - Authentication

This is the authentication service for HoomGroom. It is responsible for managing user accounts, authentication, and authorization.

Akmal Ramadhan - 2206081534 - A06

Code Review

Bugs Code Smells Coverage Duplicated Lines (%)

Monitoring

Monitoring dapat dilakukan dengan mengakses Grafana.

API Documentation

Register API

HTTP Method URL
POST /auth/register

Request Body:

{
    "fullName": "Akmal Ramadhan",
    "dateOfBirth": "2003-11-14",
    "gender": "MALE",
    "username": "AMC76",
    "email": "akmalramadhan76@gmail.com",
    "password": "akmal",
    "role": "PEMBELI"
}

Login API

HTTP Method URL
POST /auth/login

Request Body:

{
  "email": "akmalramadhan76@gmail.com",
  "password": "akmal"
}

Response Body:

{
    "token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJha21hbHJhbWFkaGFuNzZAZ21haWwuY29tIiwiaWF0IjoxNzE2NTgyNjU3LCJleHAiOjE3MTY2NjkwNTd9.CIYEKfxkDL47m5KWaEAb2g01FTB4BZrVS5PJZi9xmdM",
    "userData": {
        "fullName": "Akmal Ramadhan",
        "dateOfBirth": "2003-11-14",
        "gender": "MALE",
        "username": "AMC76",
        "email": "akmalramadhan76@gmail.com",
        "role": "PEMBELI"
    }
}

Module 12: Software Architecture

Component Diagram

Component Diagram

Code Diagram

User Component

User Component

Token Component

Token Component

Data Transfer Object Component

DTO Component

Service Component

Service Component

Controller Component

Controller Component

Configuration Component

Configuration Component

Module 11: Deployment and Monitoring

Profiling

Saya menggunakan IntelliJ Profiler untuk mencari salah satu bottleneck dari service ini.

img.png img.png

Salah satu method yang saya temukan yaitu extractEmail pada JwtService saya. Method ini digunakan ketika kita memerlukan token JWT untuk user yang sudah login agar dapat mengakses halaman yang hanya bisa diakses oleh user yang sudah login. Method ini memerlukan waktu yang 22 ms sebelum optimisasi dilakukan.

Optimasi yang saya lakukan: Membuat instance JwtParser sekali saja dalam constructor untuk mengurangi overhead setiap token di-parsing. Simpan token yang telah di-parsing ke dalam cache tokenCache.

Saya melakukan profiling lagi dan mendapatkan hasil sebagai berikut: img.png Diperoleh waktu yang sedikit lebih cepat yaitu 10 ms.

About

This is back-end repository for authentication

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published