commit fe526b04be90d67d0623dcf9e05b0705cc236b44
parent c3d513011bbe09a154289abd2cf6d4d238fa2a07
Author: Christian Grothoff <christian@grothoff.org>
Date: Sun, 21 Dec 2025 20:23:11 +0100
fix #10765: do not require MFA if the admin is deleting an instance
Diffstat:
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_private-delete-instances-ID.c b/src/backend/taler-merchant-httpd_private-delete-instances-ID.c
@@ -28,20 +28,22 @@
* Handle a DELETE "/instances/$ID" request.
*
* @param[in,out] hc http request context
+ * @param mfa_check true if a MFA check is required
* @param mi instance to delete
* @param connection the MHD connection to handle
* @return MHD result code
*/
static MHD_RESULT
delete_instances_ID (struct TMH_HandlerContext *hc,
+ bool mfa_check,
struct TMH_MerchantInstance *mi,
struct MHD_Connection *connection)
{
- const char *purge_s;
bool purge;
enum GNUNET_DB_QueryStatus qs;
GNUNET_assert (NULL != mi);
+ if (mfa_check)
{
enum GNUNET_GenericReturnValue ret =
TMH_mfa_check_simple (hc,
@@ -56,13 +58,17 @@ delete_instances_ID (struct TMH_HandlerContext *hc,
}
}
- purge_s = MHD_lookup_connection_value (connection,
- MHD_GET_ARGUMENT_KIND,
- "purge");
- if (NULL == purge_s)
- purge_s = "no";
- purge = (0 == strcasecmp (purge_s,
- "yes"));
+ {
+ const char *purge_s;
+
+ purge_s = MHD_lookup_connection_value (connection,
+ MHD_GET_ARGUMENT_KIND,
+ "purge");
+ if (NULL == purge_s)
+ purge_s = "no";
+ purge = (0 == strcasecmp (purge_s,
+ "yes"));
+ }
if (purge)
qs = TMH_db->purge_instance (TMH_db->cls,
mi->settings.id);
@@ -123,6 +129,7 @@ TMH_private_delete_instances_ID (
(void) rh;
return delete_instances_ID (hc,
+ true,
mi,
connection);
}
@@ -147,6 +154,7 @@ TMH_private_delete_instances_default_ID (
hc->infix);
}
return delete_instances_ID (hc,
+ false,
mi,
connection);
}