detect admin more reliably
diff --git a/src/couch/src/couch_password_hasher.erl b/src/couch/src/couch_password_hasher.erl
index d947500..55421a8 100644
--- a/src/couch/src/couch_password_hasher.erl
+++ b/src/couch/src/couch_password_hasher.erl
@@ -40,7 +40,7 @@
maybe_upgrade_password_hash(AuthModule, UserName, Password, UserProps) ->
UpgradeEnabled = config:get_boolean("chttpd_auth", "upgrade_hash_on_auth", true),
- IsAdmin = is_admin(UserProps),
+ IsAdmin = is_admin(UserName),
NeedsUpgrade = needs_upgrade(UserProps),
InProgress = in_progress(AuthModule, UserName),
if
@@ -106,9 +106,8 @@
couch_passwords:get_unhashed_admins()
).
-is_admin(UserProps) ->
- Roles = couch_util:get_value(<<"roles">>, UserProps, []),
- lists:member(<<"_admin">>, Roles).
+is_admin(UserName) ->
+ config:get("admins", ?b2l(UserName)) /= undefined.
needs_upgrade(UserProps) ->
CurrentScheme = couch_util:get_value(<<"password_scheme">>, UserProps),