# Rol de usuario - [rolUsuario]

## 🧾 **Descripción**

*Valida si un usuario tiene el rol **"Supervisor Nacional"** dentro del ERP.*  
*Busca en la tabla <span style="color: rgb(224, 62, 45);">**`tabHas Role`**</span> un registro cuya columna <span style="color: rgb(224, 62, 45);">**`role = 'Supervisor Nacional'`**</span> y <span style="color: rgb(224, 62, 45);">**`parent = {name_usuario}`**</span>.*

---

# 🚀 **Endpoint**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-%2Frol-usuario"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<strong><span style="color: rgb(224, 62, 45);">POST /rol-usuario</span></strong>`</div></div>> La ruta exacta depende de tu archivo `routes/api.php`.

---

# 🔐 **Seguridad**

- Recibe el nombre del usuario sin autenticación adicional.
- Se recomienda incluir autenticación JWT o token de aplicación para mayor seguridad.

---

# 📥 **Request Body**

### JSON

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--3"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div><table border="1" id="bkmrk-%7B-%22name%22%3A-%22string%22-%7D" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

### Campos

<div class="_tableContainer_1rjym_1" id="bkmrk-campo-tipo-requerido"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="928" data-start="757"><thead data-end="801" data-start="757"><tr data-end="801" data-start="757"><th data-col-size="sm" data-end="765" data-start="757">Campo</th><th data-col-size="sm" data-end="774" data-start="765">Tipo</th><th data-col-size="sm" data-end="786" data-start="774">Requerido</th><th data-col-size="md" data-end="801" data-start="786">Descripción</th></tr></thead><tbody data-end="928" data-start="847"><tr data-end="928" data-start="847"><td data-col-size="sm" data-end="855" data-start="847">name</td><td data-col-size="sm" data-end="864" data-start="855">string</td><td data-col-size="sm" data-end="876" data-start="864">Sí</td><td data-col-size="md" data-end="928" data-start="876">Nombre interno del usuario en ERPNext (us.name).</td></tr></tbody></table>

</div></div>---

# 🧩 **Lógica Interna del Servicio (resumen)**

1. Toma <span style="color: rgb(224, 62, 45);">**`name`**</span> desde el request.
2. Construye una consulta SQL hacia ERP que busca:
    
    
    - El usuario (<span style="color: rgb(224, 62, 45);">**`rol.parent`**</span>)
    - El rol <span style="color: rgb(224, 62, 45);">**`"Supervisor Nacional"`**</span> <span style="color: rgb(224, 62, 45);">**(`rol.role`)**</span>
3. Ejecuta:
    
    
    - `<span style="color: rgb(224, 62, 45);"><strong>dbErp("POST", body, method/send-query-database)</strong></span>`
4. Si encuentra el rol → retorna verdadero
5. Si no lo encuentra → indica que no es supervisor
6. Maneja errores con <span style="color: rgb(224, 62, 45);">**`try/catch`**</span>.

---

# 📤 **Responses**

## ✔️ 200 – Usuario es Supervisor Nacional

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--6"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div><table border="1" id="bkmrk-%7B-%22value%22%3A-true%2C-%22ms" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"value"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Listado exitoso"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

---

## ❌ 200 – Usuario NO es supervisor

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--8"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div><table border="1" id="bkmrk-%7B-%22value%22%3A-false%2C-%22m" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"value"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Usuario no es supervisor"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

---

## ❌ 500 – Error interno al procesar

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--10"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div><table border="1" id="bkmrk-%7B-%22value%22%3A-false%2C-%22m-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"value"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Mensaje de excepción"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

---

# 📚 **Schemas**

### Request

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--12"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div><table border="1" id="bkmrk-%7B-%22name%22%3A-%22string%22-%7D-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

### Response

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk--13"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div><table border="1" id="bkmrk-%7B-%22value%22%3A-%22boolean%22" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"value"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"boolean"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"boolean (solo en éxito o denegado)"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

---

# 🧪 Ejemplo de uso (curl)

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-curl--x-post-https%3A%2F"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"></div></div><div class="overflow-y-auto p-4" dir="ltr"></div><div class="overflow-y-auto p-4" dir="ltr"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`curl -X POST https://midominio.com/api/rol-usuario \-H <span class="hljs-string">"Content-Type: application/json"</span> \-d <span class="hljs-string">'{"name":"jhon.doe@empresa.com"}'</span>`</td></tr></tbody></table>

</div></div>