# Login

Endpoints de autenticación para la app móvil DeportesCam.
Las credenciales se validan contra la tabla `pad_registropadel`.

---

## POST /deportescam/login/acceso

Valida las credenciales del usuario y devuelve un Bearer token Sanctum.

**Autenticación:** No requerida  
**Middleware:** `seguridadFSG`, `throttle:60,1`, `guest:sanctum`

### Body (JSON)

| Campo | Tipo | Requerido | Descripción | Ejemplo |
|-------|------|-----------|-------------|---------|
| `username` | string | Sí | Nombre de usuario registrado en DeportesCam | `jperez` |
| `password` | string | Sí | Contraseña del usuario | `MiClave123` |

```json
{
  "username": "jperez",
  "password": "MiClave123"
}
```

### Respuestas

#### 200 — Credenciales correctas

```json
{
  "success": true,
  "message": "Bienvenido, Juan Pérez",
  "token": "3|aB3xZ9qW...",
  "token_type": "Bearer",
  "expira_en": "2026-06-22T00:00:00-06:00"
}
```

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `success` | bool | `true` cuando el login fue exitoso |
| `message` | string | Mensaje de bienvenida con el nombre del usuario |
| `token` | string | Bearer token para usar en requests autenticadas |
| `token_type` | string | Siempre `"Bearer"` |
| `expira_en` | string\|null | Fecha ISO 8601 de expiración. `null` si no expira |

#### 422 — Credenciales incorrectas

```json
{
  "success": false,
  "required": true,
  "message": {
    "username": ["Usuario o contraseña incorrectos."]
  }
}
```

#### 422 — Cuenta no activa

```json
{
  "success": false,
  "required": true,
  "message": {
    "username": ["La cuenta no está activa."]
  }
}
```

#### 422 — Cuenta bloqueada

```json
{
  "success": false,
  "required": true,
  "message": {
    "username": ["Cuenta bloqueada. Contacta al administrador."]
  }
}
```

#### 422 — Campos requeridos faltantes

```json
{
  "success": false,
  "status": 422,
  "message": "Tienes errores de validación",
  "errors": {
    "username": ["El campo usuario es requerido."],
    "password": ["El campo contraseña es requerido."]
  }
}
```

---

## POST /deportescam/login/logout

Revoca el Bearer token con el que se realizó la petición.
El cliente debe eliminar el token almacenado localmente tras recibir la respuesta.

**Autenticación:** Requerida (`Authorization: Bearer {token}`)  
**Middleware:** `auth:sanctum`, `seguridadFSG`, `throttle:60,1`

### Body

No requiere body.

### Respuestas

#### 200 — Sesión cerrada

```json
{
  "success": true,
  "message": "Sesión cerrada correctamente."
}
```

#### 401 — Token inválido o ausente

```json
{
  "message": "Unauthenticated."
}
```
