habulaj commited on
Commit
5be5d76
·
verified ·
1 Parent(s): 157620d

Update routes/approvals.py

Browse files
Files changed (1) hide show
  1. routes/approvals.py +63 -0
routes/approvals.py CHANGED
@@ -139,6 +139,69 @@ async def get_users_pending_approval() -> Dict[str, Any]:
139
  logger.error(f"❌ Erro ao buscar usuários e respostas: {str(e)}")
140
  raise HTTPException(status_code=500, detail="Erro interno do servidor")
141
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  @router.get("/admin/pending-approvals")
143
  async def pending_approvals_endpoint(
144
  user_token: str = Header(None, alias="User-key")
 
139
  logger.error(f"❌ Erro ao buscar usuários e respostas: {str(e)}")
140
  raise HTTPException(status_code=500, detail="Erro interno do servidor")
141
 
142
+
143
+ @router.post("/admin/approve-account")
144
+ async def approve_account(
145
+ user_id: str,
146
+ user_token: str = Header(None, alias="User-key")
147
+ ):
148
+ """
149
+ Aprova a conta de um usuário.
150
+ """
151
+ try:
152
+ await verify_admin_token(user_token)
153
+
154
+ update_url = f"{SUPABASE_URL}/rest/v1/User?id=eq.{user_id}"
155
+ payload = {
156
+ "approved_account": True
157
+ }
158
+
159
+ async with aiohttp.ClientSession() as session:
160
+ async with session.patch(update_url, headers=SUPABASE_HEADERS, json=payload) as response:
161
+ if response.status != 204:
162
+ logger.error(f"❌ Erro ao aprovar conta: {response.status}")
163
+ raise HTTPException(status_code=500, detail="Erro ao aprovar a conta")
164
+
165
+ return {"status": "success", "message": "Conta aprovada com sucesso."}
166
+
167
+ except HTTPException as he:
168
+ raise he
169
+ except Exception as e:
170
+ logger.error(f"❌ Erro ao aprovar conta: {str(e)}")
171
+ raise HTTPException(status_code=500, detail=str(e))
172
+
173
+ @router.post("/admin/reject-account")
174
+ async def reject_account(
175
+ user_id: str,
176
+ reason: str = None,
177
+ user_token: str = Header(None, alias="User-key")
178
+ ):
179
+ """
180
+ Reprova a conta de um usuário, com motivo.
181
+ """
182
+ try:
183
+ await verify_admin_token(user_token)
184
+
185
+ update_url = f"{SUPABASE_URL}/rest/v1/User?id=eq.{user_id}"
186
+ payload = {
187
+ "approved_account": False,
188
+ "approval_reason": reason or "No reason specified"
189
+ }
190
+
191
+ async with aiohttp.ClientSession() as session:
192
+ async with session.patch(update_url, headers=SUPABASE_HEADERS, json=payload) as response:
193
+ if response.status != 204:
194
+ logger.error(f"❌ Erro ao reprovar conta: {response.status}")
195
+ raise HTTPException(status_code=500, detail="Erro ao reprovar a conta")
196
+
197
+ return {"status": "success", "message": "Conta reprovada com sucesso."}
198
+
199
+ except HTTPException as he:
200
+ raise he
201
+ except Exception as e:
202
+ logger.error(f"❌ Erro ao reprovar conta: {str(e)}")
203
+ raise HTTPException(status_code=500, detail=str(e))
204
+
205
  @router.get("/admin/pending-approvals")
206
  async def pending_approvals_endpoint(
207
  user_token: str = Header(None, alias="User-key")