aloux-iam 0.0.20 → 0.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +166 -32
- package/lib/models/User.js +2 -1
- package/lib/services/auth.js +2 -2
- package/package-lock.json +4521 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,13 +13,13 @@ $ npm install aloux-iam --save
|
|
|
13
13
|
En archivo `init.js`
|
|
14
14
|
|
|
15
15
|
```js
|
|
16
|
-
//
|
|
16
|
+
// Require
|
|
17
17
|
const { IAMRouter, IAMSwagger } = require('aloux-iam')
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
app.use(IAMRouter)
|
|
21
21
|
|
|
22
|
-
//
|
|
22
|
+
// swagger
|
|
23
23
|
app.use(
|
|
24
24
|
"/aloux-iam",
|
|
25
25
|
swaggerUI.serveFiles(IAMswagger, {}),
|
|
@@ -35,10 +35,10 @@ app.use(
|
|
|
35
35
|
En archivo `router.js`
|
|
36
36
|
|
|
37
37
|
```js
|
|
38
|
-
//
|
|
38
|
+
// Require
|
|
39
39
|
const { IAMAuth } = require('aloux-iam')
|
|
40
40
|
|
|
41
|
-
//
|
|
41
|
+
// Example
|
|
42
42
|
router.post('/customer', IAMAuth, customer.create)
|
|
43
43
|
```
|
|
44
44
|
|
|
@@ -61,29 +61,34 @@ Requiere las siguientes variables de entorno (.env)
|
|
|
61
61
|
|
|
62
62
|
## Endpoints disponibles
|
|
63
63
|
|
|
64
|
-
Endpoints user self (no auth)
|
|
64
|
+
### Endpoints user self (no auth)
|
|
65
65
|
|
|
66
66
|
| Method | Endpoint | Description |
|
|
67
67
|
| --------- | --------------------------|---------------|
|
|
68
|
-
| POST | iam/
|
|
69
|
-
| POST | iam/
|
|
70
|
-
| POST | iam/
|
|
71
|
-
| POST | iam/
|
|
72
|
-
| POST | iam/
|
|
68
|
+
| POST | iam/auth/email | Validar correo |
|
|
69
|
+
| POST | iam/auth/login | Iniciar sesión |
|
|
70
|
+
| POST | iam/auth/forgot/password | Enviar código a correo |
|
|
71
|
+
| POST | iam/auth/validate/code | Verificar código |
|
|
72
|
+
| POST | iam/auth/verify/mail | Verificar correo |
|
|
73
|
+
| GET | iam/auth/verify/mail/token/:token | Valida correo (Manda correo de bienvenida) |
|
|
74
|
+
| POST | iam/auth/reset/password | Reestablecer contraseña |
|
|
75
|
+
| POST | iam/auth/signup | Registrarse |
|
|
73
76
|
|
|
74
77
|
|
|
75
|
-
Endpoints user self
|
|
78
|
+
### Endpoints user self
|
|
76
79
|
|
|
77
80
|
| Method | Endpoint | Description |
|
|
78
81
|
| --------- | --------------------------|---------------|
|
|
79
|
-
| GET | iam/
|
|
80
|
-
| PUT | iam/
|
|
81
|
-
| PUT | iam/
|
|
82
|
-
| PUT | iam/
|
|
83
|
-
|
|
|
82
|
+
| GET | iam/auth/me | Obtener información de usuario autenticado |
|
|
83
|
+
| PUT | iam/auth/profile | Actualizar perfil |
|
|
84
|
+
| PUT | iam/auth/profile/pictura | Actualizar solo la foto de perfil |
|
|
85
|
+
| PUT | iam/auth/reset/password | Actualizar contraseña |
|
|
86
|
+
| POST | iam/auth/send/verify/phone | Enviar código al teléfono de la cuenta para verificarla |
|
|
87
|
+
| POST | iam/auth/verify/phone | Valida teléfono del usuario de la cuenta |
|
|
88
|
+
| POST | iam/auth/logout | Cerrar sesión |
|
|
84
89
|
|
|
85
90
|
|
|
86
|
-
Endpoints user
|
|
91
|
+
### Endpoints user
|
|
87
92
|
|
|
88
93
|
| Method | Endpoint | Description |
|
|
89
94
|
| --------- | ------------------------------|----------------|
|
|
@@ -91,47 +96,176 @@ Endpoints user
|
|
|
91
96
|
| GET | iam/user | Obtener todos los usuario |
|
|
92
97
|
| GET | iam/user/:USER_ID | Obtener detalle de usuario |
|
|
93
98
|
| PUT | iam/user/:USER_ID | Actualizar usuario |
|
|
94
|
-
| PUT | iam/user
|
|
99
|
+
| PUT | iam/user/:USER_ID/status | Activar o desactivar usuario |
|
|
95
100
|
| PUT | iam/user/password/:USER_ID | Actualizar la constraseña de un usuario |
|
|
96
101
|
| DELETE | iam/user/:USER_ID | Eliminar usuario |
|
|
97
|
-
| GET | iam/user/count | Obtiene el número de usuarios |
|
|
102
|
+
| GET | iam/user/count/all | Obtiene el número de usuarios |
|
|
98
103
|
|
|
99
104
|
|
|
100
|
-
Endpoints funtions
|
|
105
|
+
### Endpoints funtions
|
|
101
106
|
|
|
102
107
|
| Method | Endpoint | Description |
|
|
103
108
|
| --------- | --------------------------------------|----------------|
|
|
104
109
|
| POST | iam/functions | Crear función |
|
|
105
110
|
| PUT | iam/functions/:FUNCTION_ID | Actualizar función |
|
|
106
|
-
| PUT | iam/functions
|
|
111
|
+
| PUT | iam/functions/:FUNCTION_ID/status | Activar o desactivar función |
|
|
107
112
|
| GET | iam/functions | Obtener todas las funciones |
|
|
108
113
|
| GET | iam/functions/:FUNCTION_ID | Obtener detalle de la función |
|
|
109
114
|
| DELETE | iam/functions/:FUNCTION_ID | Eliminar función |
|
|
110
|
-
| GET | iam/functions/count | Obtiene el número de funciones |
|
|
115
|
+
| GET | iam/functions/count/all | Obtiene el número de funciones |
|
|
111
116
|
|
|
112
117
|
|
|
113
|
-
Endpoints permission
|
|
118
|
+
### Endpoints permission
|
|
114
119
|
|
|
115
120
|
| Method | Endpoint | Description |
|
|
116
121
|
| --------- | ------------------------------------------|---------------|
|
|
117
122
|
| POST | iam/permission | Crear permiso
|
|
118
123
|
| PUT | iam/permission/:PERMISSION_ID | Actualizar permiso |
|
|
119
|
-
| PUT | iam/permission
|
|
124
|
+
| PUT | iam/permission/:PERMISSION_ID/status | Activar o desactivar permiso |
|
|
120
125
|
| GET | iam/permission | Obtener todas los permisos |
|
|
121
126
|
| GET | iam/permission/:PERMISSION_ID | Obtener detalle de la permiso |
|
|
122
127
|
| DELETE | iam/permission/:PERMISSION_ID | Eliminar permiso |
|
|
123
|
-
| GET | iam/permission/count | Obtiene el número de permisos |
|
|
128
|
+
| GET | iam/permission/count/all | Obtiene el número de permisos |
|
|
124
129
|
|
|
125
130
|
|
|
126
|
-
Endpoints menu
|
|
131
|
+
### Endpoints menu
|
|
127
132
|
|
|
128
133
|
| Method | Endpoint | Description |
|
|
129
134
|
| --------- | --------------------------|---------------|
|
|
130
135
|
| POST | /iam/menu | Crea un elemento de menú |
|
|
131
|
-
| PUT | /iam/menu/:
|
|
132
|
-
| PUT | /iam/menu/
|
|
136
|
+
| PUT | /iam/menu/:MENU_ID | Actualiza un elemento de menú |
|
|
137
|
+
| PUT | /iam/menu/:MENU_ID/status | Activa o desactiva un menú |
|
|
133
138
|
| GET | /iam/menu | Obtiene todos los elementos de menú |
|
|
134
|
-
| GET | /iam/menu/:
|
|
135
|
-
|
|
|
139
|
+
| GET | /iam/menu/:MENU_ID | Obtiene el detalle de un elemento de menú |
|
|
140
|
+
| DELETE | /iam/menu/:MENU_ID | Elimina un elemento de menú |
|
|
136
141
|
| POST | /iam/menu/order | Ordena los elementos de menú |
|
|
137
|
-
| GET | iam/menu/count | Obtiene el número de menús |
|
|
142
|
+
| GET | iam/menu/count | Obtiene el número de menús |
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
## Aloux-AWS
|
|
146
|
+
#### Aggregate file
|
|
147
|
+
```js
|
|
148
|
+
// Require
|
|
149
|
+
const { AlouxAWS } = require('aloux-iam')
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
// variables
|
|
153
|
+
/*
|
|
154
|
+
* AWS_REGION
|
|
155
|
+
* AWS_BUCKET
|
|
156
|
+
*/
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* pathFile = folder/file_name-file_id
|
|
160
|
+
* file = req.files.property
|
|
161
|
+
*/
|
|
162
|
+
// a constant is created to save the new element
|
|
163
|
+
const result = await AlouxAWS.upload('folder/file_name', req.files.data)
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### Eliminate many files
|
|
168
|
+
```js
|
|
169
|
+
// Require
|
|
170
|
+
const { AlouxAWS } = require('aloux-iam')
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
// variables
|
|
174
|
+
/*
|
|
175
|
+
* AWS_REGION
|
|
176
|
+
* AWS_BUCKET
|
|
177
|
+
*/
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* files = [{key: 'folder/file1'},{key: 'folder/file1'}]
|
|
181
|
+
*/
|
|
182
|
+
// delete selected files
|
|
183
|
+
const files = [{key: 'folder/file1.png'},{key: 'folder/file1.png'}]
|
|
184
|
+
const deleteFiles = await AlouxAWS.deleteMany(files)
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
#### Eliminate file
|
|
189
|
+
```js
|
|
190
|
+
// Require
|
|
191
|
+
const { AlouxAWS } = require('aloux-iam')
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
// variables
|
|
195
|
+
/*
|
|
196
|
+
* AWS_REGION
|
|
197
|
+
* AWS_BUCKET
|
|
198
|
+
*/
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* file = folder/file_name
|
|
202
|
+
*/
|
|
203
|
+
// delete the file
|
|
204
|
+
const file = 'folder/file_name.png'
|
|
205
|
+
const deleteFile = await AlouxAWS.delete(file)
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Usage for emails
|
|
210
|
+
#### Send email
|
|
211
|
+
```js
|
|
212
|
+
// Require
|
|
213
|
+
const { AlouxAWS } = require('aloux-iam')
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
// variables
|
|
217
|
+
/*
|
|
218
|
+
* AWS_REGION
|
|
219
|
+
* AWS_EMAIL_SENDER
|
|
220
|
+
*/
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* email: Destination email
|
|
224
|
+
* message: Mail body
|
|
225
|
+
* subject: Mail subject
|
|
226
|
+
*/
|
|
227
|
+
// a constant is created to request the data from the req.body.
|
|
228
|
+
const { email, message, subject } = req.body
|
|
229
|
+
const sendEmail = await AlouxAWS.sendCustom(email, message, subject)
|
|
230
|
+
|
|
231
|
+
// example of the messages variable
|
|
232
|
+
// this variable must be sent as a string if you want to send modified HTML
|
|
233
|
+
/*
|
|
234
|
+
|
|
235
|
+
message: "<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><meta name='viewport' content='width=device-width, initial-scale=1.0'><title>Document</title></head><body><h1>Information</h1></body></html>"
|
|
236
|
+
|
|
237
|
+
*/
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Usage for sns
|
|
243
|
+
#### Send sns
|
|
244
|
+
```js
|
|
245
|
+
// Require
|
|
246
|
+
const { AlouxAWS } = require('aloux-iam')
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
// variables
|
|
250
|
+
/*
|
|
251
|
+
* AWS_REGION
|
|
252
|
+
*/
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* phoneNumber: Destination number
|
|
256
|
+
* message: Message body
|
|
257
|
+
*/
|
|
258
|
+
// a constant is created to request the data from the req.body.
|
|
259
|
+
const { phoneNumber, message } = req.body
|
|
260
|
+
const sendSns = await AlouxAWS.sendMessagePhone(phoneNumber, message)
|
|
261
|
+
|
|
262
|
+
// example of the phoneNumber variable
|
|
263
|
+
// this variable must be sent as a string and taking into account the telephone prefix
|
|
264
|
+
|
|
265
|
+
/*
|
|
266
|
+
|
|
267
|
+
phoneNumber: "+52244-------"
|
|
268
|
+
|
|
269
|
+
*/
|
|
270
|
+
|
|
271
|
+
```
|
package/lib/models/User.js
CHANGED
|
@@ -75,7 +75,8 @@ adminSchema.methods.generateAuthToken = async function () {
|
|
|
75
75
|
const user = this
|
|
76
76
|
|
|
77
77
|
const token = jwt.sign({ _id: user._id }, process.env.AUTH_SECRET)
|
|
78
|
-
|
|
78
|
+
const currentDate = (new Date()).getTime()
|
|
79
|
+
user.tokens = user.tokens.concat({ token, date: currentDate })
|
|
79
80
|
|
|
80
81
|
await user.save()
|
|
81
82
|
|
package/lib/services/auth.js
CHANGED
|
@@ -110,10 +110,10 @@ self.getMenu = (user) => {
|
|
|
110
110
|
for (let i in user._functions) {
|
|
111
111
|
if (user._functions[i].status === 'Activo') {
|
|
112
112
|
for (let j in user._functions[i]._menus) {
|
|
113
|
-
if (user._functions[i]._menus[j].status === 'Activo')
|
|
114
|
-
|
|
113
|
+
if (user._functions[i]._menus[j].status === 'Activo'){
|
|
115
114
|
user._functions[i]._menus[j].submenus = []
|
|
116
115
|
result.push(user._functions[i]._menus[j])
|
|
116
|
+
}
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
}
|