Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dsolartec/rust-crud-axum
Proyecto de muestra de un CRUD usando la librería Axum de Rust.
https://github.com/dsolartec/rust-crud-axum
Last synced: 8 days ago
JSON representation
Proyecto de muestra de un CRUD usando la librería Axum de Rust.
- Host: GitHub
- URL: https://github.com/dsolartec/rust-crud-axum
- Owner: dsolartec
- License: mit
- Created: 2023-09-02T15:34:55.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-09-02T15:46:43.000Z (about 1 year ago)
- Last Synced: 2023-09-03T19:48:45.901Z (about 1 year ago)
- Language: Rust
- Homepage:
- Size: 26.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Rust CRUD usando Axum
[Repositorio GitHub](https://github.com/dsolartec/rust-crud-axum)
## Instalación de Rust
Para instalar Rust solamente debes visitar la página de [rustup (Instalador oficial)](https://rustup.rs/), y ahí puedes elegir si usar el comando de la consola (Linux o MacOS) o descargar el ejecutable de instalación; posteriormente, leer y seguir los pasos del instalador usando la configuración por defecto.
## Ejecutar proyecto en la terminal
- **Paso 1** Instalar Rust (Ver [Instalación de Rust](#instalación-de-rust)).
- **Paso 2** Abrir una terminal en la carpeta donde esté el proyecto.
- **Paso 3** Ejecutar el siguiente comando: `cargo run`
- **Paso 4** Esperar que muestre el puerto :8080 en la consola.
## Licencia
Este proyecto está bajo la [licencia MIT](./LICENSE).
## Vista previa (UI)
Inicio de sesión
Registro
Activar 2AF (Escanear QR)
Verificación código 2AF
Página de inicio
## Endpoints
### Autorizaciones
- **POST** `/auth/logIn` - Inicio de sesión
**Body**
```json
{
"username": "admin",
"password": "admin"
}
```**Respuesta exitosa**
```json
{
"access_token": "JWT"
}
```**Códigos de respuesta**
- `400` - Cuando el nombre de usuario o la contraseña son incorrectos.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya iniciado sesión exitosamente.
- **POST** `/auth/signUp` - Registro
**Body**
```json
{
"username": "admin",
"password": "admin"
}
```**Respuesta exitosa**
```json
{
"access_token": "JWT"
}
```**Códigos de respuesta**
- `400` - Cuando el nombre del usuario o la contraseña no son válidos.
- `409` - Cuando el nombre de usuario ya está en uso.
- `500` - Cuando haya ocurrido un error interno.
- `201` - Cuando se haya registrado exitosamente.
- **GET** `/auth/me` - Obtener mi información
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
{
"id": 1,
"username": "admin",
"otp_enabled": false
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener la información.### 2AF (TOTP)
- **GET** `/auth/otp/qrCode` - Obtener el código QR
**Query**
- `auth` - Token de autorización**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```> **Nota:** El token de autorización se puede mandar por header o por los parámetros de la URL, esto con el fin de que se pueda usar en el atributo `src` de una imagen en HTML. **Ejemplo:** `/auth/otp/qrCode?auth=ey...`
**Respuesta exitosa**
Una imagen PNG.
**Códigos de respuesta**
- `401` - Cuando el usuario autenticado ya tiene activo el 2AF (escaneó el código previamente).
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener la información.
- **PUT** `/auth/otp/enable/:otp_code` - Activar la autenticación en dos factores
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
{
"access_token": "JWT"
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado ya tiene activo el 2AF (escaneó el código previamente).
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener todos los usuarios.
- **POST** `/auth/otp/verify/:otp_code` - Verificar el código de la autenticación en dos factores
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
{
"access_token": "JWT"
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no tiene activo el 2AF o ya ingresó un código previamente.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener todos los usuarios.### Usuarios
- **GET** `/users` - Obtener todos los usuarios
**Permisos requeridos:** `users_read` o `users_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
[
{
"id": 1,
"username": "admin"
}
]
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener todos los usuarios.
- **GET** `/users/id/:id` - Obtener un usuario usando su id
**Permisos requeridos:** `users_read` o `users_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
{
"id": 1,
"username": "admin"
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `404` - Cuando el usuario no existe.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener el usuario.
- **GET** `/users/username/:username` - Obtener un usuario usando su nombre de usuario
**Permisos requeridos:** `users_read` o `users_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
{
"id": 1,
"username": "admin"
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `404` - Cuando el usuario no existe.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener el usuario.
- **DELETE** `/users/username/:username` - Eliminar un usuario usando su nombre de usuario
**Permisos requeridos:** `users_write` o `users_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `404` - Cuando el usuario no existe.
- `409` - Cuando el usuario sea el mismo con el que te autenticaste.
- `500` - Cuando haya ocurrido un error interno.
- `204` - Cuando el usuario fue eliminado exitosamente.
- **GET** `/users/username/:username/permissions` - Obtener los permisos de un usuario usando su nombre de usuario
**Permisos requeridos:** `users_read` o `users_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
[
"users_full",
"grant_permission"
]
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `404` - Cuando el usuario no existe.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando se haya podido obtener los permisos del usuario.
- **POST** `/users/username/:username/permission/:permissionName` - Otorgarle un permiso usando su nombre de usuario
**Permisos requeridos:** `grant_permission`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `404` - Cuando el usuario o el permiso no existen.
- `409` - Cuando el usuario ya posee el permiso.
- `500` - Cuando haya ocurrido un error interno.
- `204` - Cuando el permiso fue otorgado al usuario exitosamente.
- **DELETE** `/users/username/:username/permission/:permissionName` - Removerle el permiso previamente otorgado a un usuario usando su nombre de usuario
**Permisos requeridos:** `revoke_permission`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Códigos de respuesta**
- `400` - Cuando el usuario no posee el permiso.
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `404` - Cuando el usuario o el permiso no existen.
- `409` - Cuando el usuario sea el mismo con el que te autenticaste.
- `500` - Cuando haya ocurrido un error interno.
- `204` - Cuando el permiso fue removido al usuario exitosamente.### Permisos
- **POST** `/permissions` - Crear un permiso
**Permisos requeridos:** `permissions_write` o `permissions_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
{
"id": 7,
"name": "grant_permission",
"description": "Grant a permission to an user"
}
```**Códigos de respuesta**
- `400` - Cuando el nombre del permiso o la descripción no son válidos.
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `409` - Cuando el nombre del permiso ya existe.
- `500` - Cuando haya ocurrido un error interno.
- `201` - Cuando haya podido crear el permiso.
- **GET** `/permissions` - Obtener todos los permisos
**Permisos requeridos:** `permissions_read` o `permissions_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
[
{
"id": 7,
"name": "grant_permission",
"description": "Grant a permission to an user"
}
]
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener todos los permisos.
- **GET** `/permissions/id/:id` - Obtener un permiso usando su id
**Permisos requeridos:** `permissions_read` o `permissions_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
{
"id": 7,
"name": "grant_permission",
"description": "Grant a permission to an user"
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `404` - Cuando el permiso no existe.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener el permiso.
- **GET** `/permissions/name/:permissionName` - Obtener un permiso usando su nombre
**Permisos requeridos:** `permissions_read` o `permissions_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Respuesta exitosa**
```json
{
"id": 7,
"name": "grant_permission",
"description": "Grant a permission to an user"
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `404` - Cuando el permiso no existe.
- `500` - Cuando haya ocurrido un error interno.
- `200` - Cuando haya podido obtener el permiso.
- **DELETE** `/permissions/name/:permissionName` - Eliminar un permiso usando su nombre
**Permisos requeridos:** `permissions_write` o `permissions_full`
**Headers**
```json
{
"Authorization": "Bearer {access_token}"
}
```**Códigos de respuesta**
- `401` - Cuando el usuario autenticado no posee ninguno de los permisos requeridos.
- `404` - Cuando el permiso no existe.
- `409` - Cuando el permiso no pueda ser eliminado.
- `500` - Cuando haya ocurrido un error interno.
- `204` - Cuando el permiso fue eliminado exitosamente.