14
14
// Sesiones PHP
15
15
session_start ();
16
16
17
+ // Finalizar ejecución en caso de método OPTIONS
17
18
if ($ _SERVER ['REQUEST_METHOD ' ] == 'OPTIONS ' ) {
18
19
exit ;
19
20
}
26
27
// Verificar el método de la solicitud HTTP
27
28
$ requestMethod = $ _SERVER ['REQUEST_METHOD ' ];
28
29
29
- // Funciones para las sesiones y roles
30
+ // Funciones para la API
31
+
32
+ /**
33
+ * La función "verificarSesion" verifica si el usuario está autenticado y devuelve verdadero si lo
34
+ * está, de lo contrario envía una respuesta JSON con un mensaje de error y sale del script.
35
+ *
36
+ * @return - un valor booleano.
37
+ */
30
38
function verificarSesion ()
31
39
{
32
40
if (!isset ($ _SESSION ['user_id ' ]) || !$ _SESSION ['is_authenticated ' ]) {
@@ -36,6 +44,13 @@ function verificarSesion()
36
44
return true ;
37
45
}
38
46
47
+ /**
48
+ * La función "verificarRol" verifica si el usuario tiene el rol requerido para realizar una
49
+ * determinada acción.
50
+ *
51
+ * @param - rolRequerido El parámetro "rolRequerido" representa el rol requerido por un usuario para
52
+ * realizar una determinada acción.
53
+ */
39
54
function verificarRol ($ rolRequerido )
40
55
{
41
56
// Primero, verificamos si el usuario está autenticado
@@ -48,149 +63,150 @@ function verificarRol($rolRequerido)
48
63
}
49
64
}
50
65
66
+ /**
67
+ * La función "validarParametro" comprueba si falta algún parámetro o tiene un tipo incorrecto y
68
+ * devuelve verdadero si todo es válido.
69
+ *
70
+ * @param - parametro El parámetro "parámetro" es el valor que necesita ser validado. Puede ser de
71
+ * cualquier tipo de datos.
72
+ * @param - tipoEsperado El parámetro "tipoEsperado" es un parámetro opcional que especifica el tipo de
73
+ * datos esperado del parámetro "parametro". Si se proporciona, la función comprobará si el tipo de
74
+ * datos del parámetro "parámetro" coincide con el tipo esperado.
75
+ *
76
+ * @return - un valor booleano de verdadero.
77
+ */
78
+ function validarParametro ($ parametro , $ tipoEsperado = null ) {
79
+ if (!isset ($ parametro )) {
80
+ jsonResponse (["message " => "Parámetro faltante " ], 400 );
81
+ exit ;
82
+ }
83
+ if ($ tipoEsperado && gettype ($ parametro ) !== $ tipoEsperado ) {
84
+ jsonResponse (["message " => "Tipo de parámetro incorrecto " ], 400 );
85
+ exit ;
86
+ }
87
+ return true ;
88
+ }
51
89
52
90
// Procesar la solicitud según el método HTTP y la acción proporcionada
53
91
switch ($ requestMethod ) {
54
- // Peticiones POST
55
92
case 'POST ' :
56
- // Verificar si se proporciona una acción
57
- if (isset ($ _GET ['action ' ])) {
58
- switch ($ _GET ['action ' ]) {
59
- case 'register ' :
60
- // Registrar un usuario
61
- $ response = $ usuarioController ->register ($ _POST );
62
- jsonResponse ($ response );
63
- break ;
64
- case 'login ' :
65
- // Iniciar sesión de un usuario
66
- $ response = $ usuarioController ->login ($ _POST );
67
- jsonResponse ($ response );
68
- break ;
69
- case 'verify ' :
70
- // Verificar la cuenta de un usuario
71
- $ response = $ usuarioController ->verify ($ _POST );
72
- jsonResponse ($ response );
73
- break ;
74
- case 'logout ' :
75
- verificarSesion ();
76
- $ response = $ usuarioController ->logout ();
77
- jsonResponse ($ response );
78
- break ;
79
- case 'addRole ' :
80
- // Agregar un rol
81
- verificarSesion ();
82
- verificarRol ('admin ' );
83
- $ response = $ rolController ->addRole ($ _POST );
84
- jsonResponse ($ response );
85
- break ;
86
- case 'updateRole ' :
87
- // Actualizar un rol
88
- verificarSesion ();
89
- verificarRol ('admin ' );
90
- $ response = $ rolController ->updateRole ($ _POST ['id ' ], $ _POST );
91
- break ;
92
- case 'deleteRole ' :
93
- // Eliminar un rol
94
- verificarSesion ();
95
- verificarRol ('admin ' );
96
- $ response = $ rolController ->deleteRole ($ _POST ['id ' ]);
97
- jsonResponse ($ response );
98
- break ;
99
- case 'addPermission ' :
100
- // Agregar un permiso
101
- verificarSesion ();
102
- verificarRol ('admin ' );
103
- $ response = $ permisoController ->addPermission ($ _POST );
104
- jsonResponse ($ response );
105
- break ;
106
- case 'updatePermission ' :
107
- // Actualizar un permiso
108
- verificarSesion ();
109
- verificarRol ('admin ' );
110
- $ response = $ permisoController ->updatePermission ($ _POST ['id ' ], $ _POST );
111
- jsonResponse ($ response );
112
- break ;
113
- case 'deletePermission ' :
114
- // Eliminar un permiso
115
- verificarSesion ();
116
- verificarRol ('admin ' );
117
- $ response = $ permisoController ->deletePermission ($ _POST ['id ' ]);
118
- jsonResponse ($ response );
119
- break ;
120
- case 'updateProfile ' :
121
- // Actualizar el perfil del usuario
122
- verificarSesion ();
123
- $ response = $ usuarioController ->updateProfile ($ _SESSION ['user_id ' ], $ _POST );
124
- jsonResponse ($ response );
125
- break ;
126
- default :
127
- // Acción no reconocida
128
- jsonResponse (["message " => "Acción no permitida " ], 400 );
129
- break ;
130
- }
131
- } else {
132
- // No se proporcionó ninguna acción
133
- jsonResponse (["message " => "Acción no especificada " ], 400 );
93
+ validarParametro ($ _GET ['action ' ], 'string ' );
94
+ switch ($ _GET ['action ' ]) {
95
+ case 'register ' :
96
+ validarParametro ($ _POST );
97
+ $ response = $ usuarioController ->register ($ _POST );
98
+ jsonResponse ($ response );
99
+ break ;
100
+ case 'login ' :
101
+ validarParametro ($ _POST );
102
+ $ response = $ usuarioController ->login ($ _POST );
103
+ jsonResponse ($ response );
104
+ break ;
105
+ case 'verify ' :
106
+ validarParametro ($ _POST );
107
+ $ response = $ usuarioController ->verify ($ _POST );
108
+ jsonResponse ($ response );
109
+ break ;
110
+ case 'logout ' :
111
+ verificarSesion ();
112
+ $ response = $ usuarioController ->logout ();
113
+ jsonResponse ($ response );
114
+ break ;
115
+ case 'addRole ' :
116
+ verificarSesion ();
117
+ verificarRol ('admin ' );
118
+ validarParametro ($ _POST );
119
+ $ response = $ rolController ->addRole ($ _POST );
120
+ jsonResponse ($ response );
121
+ break ;
122
+ case 'updateRole ' :
123
+ verificarSesion ();
124
+ verificarRol ('admin ' );
125
+ validarParametro ($ _POST ['id ' ], 'string ' );
126
+ $ response = $ rolController ->updateRole ($ _POST ['id ' ], $ _POST );
127
+ jsonResponse ($ response );
128
+ break ;
129
+ case 'deleteRole ' :
130
+ verificarSesion ();
131
+ verificarRol ('admin ' );
132
+ validarParametro ($ _POST ['id ' ], 'string ' );
133
+ $ response = $ rolController ->deleteRole ($ _POST ['id ' ]);
134
+ jsonResponse ($ response );
135
+ break ;
136
+ case 'addPermission ' :
137
+ verificarSesion ();
138
+ verificarRol ('admin ' );
139
+ validarParametro ($ _POST );
140
+ $ response = $ permisoController ->addPermission ($ _POST );
141
+ jsonResponse ($ response );
142
+ break ;
143
+ case 'updatePermission ' :
144
+ verificarSesion ();
145
+ verificarRol ('admin ' );
146
+ validarParametro ($ _POST ['id ' ], 'string ' );
147
+ $ response = $ permisoController ->updatePermission ($ _POST ['id ' ], $ _POST );
148
+ jsonResponse ($ response );
149
+ break ;
150
+ case 'deletePermission ' :
151
+ verificarSesion ();
152
+ verificarRol ('admin ' );
153
+ validarParametro ($ _POST ['id ' ], 'string ' );
154
+ $ response = $ permisoController ->deletePermission ($ _POST ['id ' ]);
155
+ jsonResponse ($ response );
156
+ break ;
157
+ case 'updateProfile ' :
158
+ verificarSesion ();
159
+ validarParametro ($ _SESSION ['user_id ' ], 'string ' );
160
+ $ response = $ usuarioController ->updateProfile ($ _SESSION ['user_id ' ], $ _POST );
161
+ jsonResponse ($ response );
162
+ break ;
163
+ default :
164
+ jsonResponse (["message " => "Acción no permitida " ], 400 );
165
+ break ;
134
166
}
135
167
break ;
136
168
137
- // Peticiones GET
138
169
case 'GET ' :
139
- if (isset ($ _GET ['action ' ])) {
140
- switch ($ _GET ['action ' ]) {
141
- case 'getAllRoles ' :
142
- // Devolver todos los roles
143
- verificarSesion ();
144
- verificarRol ('admin ' );
145
- $ response = $ rolController ->getAllRoles ();
146
- jsonResponse ($ response );
147
- break ;
148
- case 'getRoleById ' :
149
- // Devolver un rol por su id
150
- verificarSesion ();
151
- verificarRol ('admin ' );
152
- if (!isset ($ _GET ['id ' ])) {
153
- jsonResponse (["message " => "El parámetro 'id' es requerido " ], 400 );
154
- exit ;
155
- }
156
- $ response = $ rolController ->getRoleById ($ _GET ['id ' ]);
157
- jsonResponse ($ response );
158
- break ;
159
- case 'getAllPermissions ' :
160
- // Devolver todos los permisos
161
- verificarSesion ();
162
- verificarRol ('admin ' );
163
- $ response = $ permisoController ->getAllPermissions ();
164
- jsonResponse ($ response );
165
- break ;
166
- case 'getPermissionById ' :
167
- // Devolver un permiso por su id
168
- verificarSesion ();
169
- verificarRol ('admin ' );
170
- if (!isset ($ _GET ['id ' ])) {
171
- jsonResponse (["message " => "El parámetro 'id' es requerido " ], 400 );
172
- exit ;
173
- }
174
- $ response = $ permisoController ->getPermissionById ($ _GET ['id ' ]);
175
- jsonResponse ($ response );
176
- break ;
177
- case 'getProfile ' :
178
- // Devolver el perfil del usuario por el id de la sesión
179
- verificarSesion ();
180
- $ response = $ usuarioController ->getProfile ($ _SESSION ['user_id ' ]);
181
- jsonResponse ($ response );
182
- break ;
183
- default :
184
- // Acción no reconocida
185
- jsonResponse (["message " => "Acción no permitida " ], 400 );
186
- break ;
187
- }
188
- } else {
189
- jsonResponse (["message " => "Acción no especificada " ], 400 );
170
+ validarParametro ($ _GET ['action ' ], 'string ' );
171
+ switch ($ _GET ['action ' ]) {
172
+ case 'getAllRoles ' :
173
+ verificarSesion ();
174
+ verificarRol ('admin ' );
175
+ $ response = $ rolController ->getAllRoles ();
176
+ jsonResponse ($ response );
177
+ break ;
178
+ case 'getRoleById ' :
179
+ verificarSesion ();
180
+ verificarRol ('admin ' );
181
+ validarParametro ($ _GET ['id ' ], 'string ' );
182
+ $ response = $ rolController ->getRoleById ($ _GET ['id ' ]);
183
+ jsonResponse ($ response );
184
+ break ;
185
+ case 'getAllPermissions ' :
186
+ verificarSesion ();
187
+ verificarRol ('admin ' );
188
+ $ response = $ permisoController ->getAllPermissions ();
189
+ jsonResponse ($ response );
190
+ break ;
191
+ case 'getPermissionById ' :
192
+ verificarSesion ();
193
+ verificarRol ('admin ' );
194
+ validarParametro ($ _GET ['id ' ], 'string ' );
195
+ $ response = $ permisoController ->getPermissionById ($ _GET ['id ' ]);
196
+ jsonResponse ($ response );
197
+ break ;
198
+ case 'getProfile ' :
199
+ verificarSesion ();
200
+ validarParametro ($ _SESSION ['user_id ' ], 'string ' );
201
+ $ response = $ usuarioController ->getProfile ($ _SESSION ['user_id ' ]);
202
+ jsonResponse ($ response );
203
+ break ;
204
+ default :
205
+ jsonResponse (["message " => "Acción no permitida " ], 400 );
206
+ break ;
190
207
}
191
208
break ;
192
209
default :
193
- // Método HTTP no permitido
194
210
jsonResponse (["message " => "Método no permitido " ], 405 );
195
211
break ;
196
- }
212
+ }
0 commit comments