]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: db_oauth2_user_is_enabled() - Flatten the code
authorMarco Bettini <marco.bettini@open-xchange.com>
Thu, 1 Jun 2023 08:37:56 +0000 (08:37 +0000)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Tue, 29 Aug 2023 07:08:45 +0000 (07:08 +0000)
src/auth/db-oauth2.c

index f794cf46481156cbe18dab775fbc7e9b6f453776..20418351a26b64f23174b202cd3c8ef44ea629d9 100644 (file)
@@ -605,36 +605,38 @@ static bool
 db_oauth2_user_is_enabled(struct db_oauth2_request *req,
                          enum passdb_result *result_r, const char **error_r)
 {
-       if (*req->db->set.active_attribute != '\0' &&
-           *req->db->set.active_value != '\0') {
-               const char *active_value =
-                       auth_fields_find(req->fields, req->db->set.active_attribute);
-               if (active_value != NULL) {
-                       if (strcmp(req->db->set.active_value, active_value) == 0) {
-                               e_debug(authdb_event(req->auth_request),
-                                       "oauth2 active_attribute check succeeded");
-                       } else {
-                               e_debug(authdb_event(req->auth_request),
-                                       "oauth2 active_attribute check failed: expected %s=\"%s\" but got \"%s\"",
-                                       req->db->set.active_attribute,
-                                       req->db->set.active_value,
-                                       active_value);
-                               *error_r = "Provided token is not valid";
-                               *result_r = PASSDB_RESULT_PASSWORD_MISMATCH;
-                               return FALSE;
-                       }
-               } else {
-                       e_debug(authdb_event(req->auth_request),
-                               "oauth2 active_attribute \"%s\" not found in oauth2 server's response",
-                               req->db->set.active_attribute);
-                       *error_r = "Missing active_attribute from token";
-                       *result_r = PASSDB_RESULT_PASSWORD_MISMATCH;
-                       return FALSE;
-               }
-       } else {
+       if (*req->db->set.active_attribute == '\0' ||
+           *req->db->set.active_value == '\0') {
                e_debug(authdb_event(req->auth_request),
                        "oauth2 active_attribute is not configured; skipping the check");
+               return TRUE;
        }
+
+       const char *active_value =
+               auth_fields_find(req->fields, req->db->set.active_attribute);
+
+       if (active_value == NULL) {
+               e_debug(authdb_event(req->auth_request),
+                       "oauth2 active_attribute \"%s\" is not present in the oauth2 server's response",
+                       req->db->set.active_attribute);
+               *error_r = "Missing active_attribute from token";
+               *result_r = PASSDB_RESULT_PASSWORD_MISMATCH;
+               return FALSE;
+       }
+
+       if (strcmp(req->db->set.active_value, active_value) != 0) {
+               e_debug(authdb_event(req->auth_request),
+                       "oauth2 active_attribute check failed: expected %s=\"%s\" but got \"%s\"",
+                       req->db->set.active_attribute,
+                       req->db->set.active_value,
+                       active_value);
+               *error_r = "Provided token is not valid";
+               *result_r = PASSDB_RESULT_PASSWORD_MISMATCH;
+               return FALSE;
+       }
+
+       e_debug(authdb_event(req->auth_request),
+               "oauth2 active_attribute check succeeded");
        return TRUE;
 }