akra35567 commited on
Commit
41b3744
·
verified ·
1 Parent(s): 0d1d7e4

Upload index.js

Browse files
Files changed (1) hide show
  1. index.js +109 -0
index.js CHANGED
@@ -198,6 +198,115 @@ function initializeServer() {
198
  } catch (error) {
199
  res.status(500).json({
200
  status: 'error',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  error: error.message
202
  });
203
  }
 
198
  } catch (error) {
199
  res.status(500).json({
200
  status: 'error',
201
+ message: 'Erro ao resetar caches',
202
+ error: error.message
203
+ });
204
+ }
205
+ });
206
+
207
+ // ═══ Rota: Verificar Privilégios ═══
208
+ app.post('/check-privileges', (req, res) => {
209
+ try {
210
+ const { numero } = req.body;
211
+
212
+ if (!numero) {
213
+ return res.status(400).json({
214
+ error: 'Número obrigatório'
215
+ });
216
+ }
217
+
218
+ // Verificar privilégios via API interna
219
+ const isPrivileged = config.isPrivileged(numero);
220
+
221
+ res.json({
222
+ numero: numero,
223
+ privilegiado: isPrivileged,
224
+ timestamp: new Date().toISOString()
225
+ });
226
+ } catch (error) {
227
+ res.status(500).json({
228
+ error: 'Erro interno',
229
+ message: error.message
230
+ });
231
+ }
232
+ });
233
+
234
+ // ═══ Rota: Conceder Privilégio Temporário ═══
235
+ app.post('/grant-temp-privilege', (req, res) => {
236
+ try {
237
+ const { admin_numero, target_numero, duracao_horas = 24 } = req.body;
238
+
239
+ if (!admin_numero || !target_numero) {
240
+ return res.status(400).json({
241
+ error: 'Admin e target obrigatórios'
242
+ });
243
+ }
244
+
245
+ // Verificar se admin é privilegiado
246
+ if (!config.isPrivileged(admin_numero)) {
247
+ return res.status(403).json({
248
+ error: 'Acesso negado: apenas admins'
249
+ });
250
+ }
251
+
252
+ // Conceder privilégio temporário
253
+ const result = config.conceder_privilegio_temporario(target_numero, duracao_horas);
254
+
255
+ if (result.success) {
256
+ res.json({
257
+ success: true,
258
+ codigo: result.codigo,
259
+ instrucoes: result.instrucoes,
260
+ expira_em: result.expira_em,
261
+ timestamp: new Date().toISOString()
262
+ });
263
+ } else {
264
+ res.status(500).json({
265
+ error: 'Falha ao conceder privilégio'
266
+ });
267
+ }
268
+ } catch (error) {
269
+ res.status(500).json({
270
+ error: 'Erro interno',
271
+ message: error.message
272
+ });
273
+ }
274
+ });
275
+
276
+ // ═══ Rota: Validar Código de Privilégio ═══
277
+ app.post('/validate-privilege-code', (req, res) => {
278
+ try {
279
+ const { numero, codigo } = req.body;
280
+
281
+ if (!numero || !codigo) {
282
+ return res.status(400).json({
283
+ error: 'Número e código obrigatórios'
284
+ });
285
+ }
286
+
287
+ const result = config.validar_codigo_privilegio(numero, codigo);
288
+
289
+ if (result.valido) {
290
+ res.json({
291
+ valido: true,
292
+ permissoes: result.permissoes,
293
+ nivel: result.nivel,
294
+ timestamp: new Date().toISOString()
295
+ });
296
+ } else {
297
+ res.status(400).json({
298
+ valido: false,
299
+ motivo: result.motivo,
300
+ timestamp: new Date().toISOString()
301
+ });
302
+ }
303
+ } catch (error) {
304
+ res.status(500).json({
305
+ error: 'Erro interno',
306
+ message: error.message
307
+ });
308
+ }
309
+ });
310
  error: error.message
311
  });
312
  }