Module - Utilisateurs

Le module utilisateurs gère l'ensemble des utilisateurs de la plateforme, avec différents types d'utilisateurs ayant des rôles et permissions spécifiques.

Types d'utilisateurs

Endpoints

GET
/users

Récupérer la liste des utilisateurs (réservé aux administrateurs)

Paramètres de requête

  • userType : type d'utilisateur (CUSTOMER, OWNER, ADMIN)
  • email : filtrer par email
GET
/users/:id

Récupérer les détails d'un utilisateur spécifique

Exemple de réponse

{
  "id": "cm2y6lhu50000fspuentp5fx2",
  "name": "Jean Dupont",
  "email": "jean.dupont@example.com",
  "phone": "+33600000000",
  "userType": "OWNER",
  "image": "https://example.com/avatar.jpg",
  "createdAt": "2023-09-15T14:30:00Z",
  "updatedAt": "2023-09-15T14:30:00Z",
  "owner": {
    "id": "own123",
    "properties": [
      {
        "id": "cm5p90ics0001v2zzx604cd5p",
        "title": "Villa moderne avec piscine"
      }
    ]
  }
}
POST
/users/register

Créer un nouveau compte utilisateur

Corps de la requête

{
  "name": "Jean Dupont",
  "email": "jean.dupont@example.com",
  "password": "motdepasse123",
  "phone": "+33600000000",
  "userType": "OWNER"
}
POST
/users/login

Connecter un utilisateur

Corps de la requête

{
  "email": "jean.dupont@example.com",
  "password": "motdepasse123"
}
PATCH
/users/:id

Mettre à jour les informations d'un utilisateur

DELETE
/users/:id

Supprimer un compte utilisateur

Modèle de données

Voici la structure du modèle User :

model User {
  id                String          @id @default(cuid())
  name              String?
  email             String          @unique
  emailVerified     DateTime?
  image             String?
  hash              String?
  salt              String?
  phone             String?
  userType          UserType?       @default(CUSTOMER)
  createdAt         DateTime        @default(now())
  updatedAt         DateTime        @updatedAt
  accounts          Account[]
  sessions          Session[]
  owner             Owner?
  customer          Customer?
  admin             Admin?
  favorites         Favorite[]
  notifications     Notification[]
  appointments      Appointment[]
}

Énumération UserType

enum UserType {
  CUSTOMER
  OWNER
  ADMIN
}