Page MenuHomePhabricator

Implement a service to check if 2FA is required for user
Closed, ResolvedPublic

Description

With 2FA condition being part of $wgRestrictedGroups, we no longer have a simple way of testing if a user is actually required to have 2FA.

If a condition for a group is more complex than a simple conjunction, we'll need to analyze it to be able to tell if user can disable their 2FA. For example, for the following condition:

[ '|', APCOND_HAS_2FA, APCOND_SOME_OTHER ]

If APCOND_SOME_OTHER is true, the user is not required to have 2FA actually. They should be able to disable it normally. On the other hand, if APCOND_SOME_OTHER was false, then 2FA should be treated as mandatory.

Event Timeline

Change #1238303 had a related patch set uploaded (by Mszwarc; author: Mszwarc):

[mediawiki/core@master] Make RestrictedUserGroupChecker::getGroupRestrictions public

https://gerrit.wikimedia.org/r/1238303

Change #1238304 had a related patch set uploaded (by Mszwarc; author: Mszwarc):

[mediawiki/core@master] Make UserRequirementsConditionChecker stable to extend

https://gerrit.wikimedia.org/r/1238304

Change #1238305 had a related patch set uploaded (by Mszwarc; author: Mszwarc):

[mediawiki/extensions/OATHAuth@master] Create user condition checker that can assume user's 2FA status

https://gerrit.wikimedia.org/r/1238305

Change #1238303 merged by jenkins-bot:

[mediawiki/core@master] Make RestrictedUserGroupChecker::getGroupRestrictions public

https://gerrit.wikimedia.org/r/1238303

Change #1238304 merged by jenkins-bot:

[mediawiki/core@master] Make UserRequirementsConditionChecker stable to extend

https://gerrit.wikimedia.org/r/1238304

Change #1239201 had a related patch set uploaded (by Mszwarc; author: Mszwarc):

[mediawiki/core@master] UserRequirementsConditionChecker: Support extracting conditions

https://gerrit.wikimedia.org/r/1239201

Change #1239202 had a related patch set uploaded (by Mszwarc; author: Mszwarc):

[mediawiki/extensions/OATHAuth@master] Implement a service listing groups requiring 2FA

https://gerrit.wikimedia.org/r/1239202

Change #1239668 had a related patch set uploaded (by Mszwarc; author: Mszwarc):

[mediawiki/core@master] Create RestrictedUserGroupCheckerFactory

https://gerrit.wikimedia.org/r/1239668

Change #1238305 merged by jenkins-bot:

[mediawiki/extensions/OATHAuth@master] Create user condition checker that can assume user's 2FA status

https://gerrit.wikimedia.org/r/1238305

Change #1240231 had a related patch set uploaded (by Mszwarc; author: Mszwarc):

[mediawiki/extensions/OATHAuth@master] Support whole-wikifarm checks for mandatory 2FA

https://gerrit.wikimedia.org/r/1240231

Change #1239201 merged by jenkins-bot:

[mediawiki/core@master] UserRequirementsConditionChecker: Support extracting conditions

https://gerrit.wikimedia.org/r/1239201

Change #1239668 merged by jenkins-bot:

[mediawiki/core@master] Create RestrictedUserGroupCheckerFactory

https://gerrit.wikimedia.org/r/1239668

Change #1239202 merged by jenkins-bot:

[mediawiki/extensions/OATHAuth@master] Implement a service listing groups requiring 2FA

https://gerrit.wikimedia.org/r/1239202

Change #1240647 had a related patch set uploaded (by Mszwarc; author: Mszwarc):

[mediawiki/core@master] Fix UserRequirementsConditionChecker if condition is empty array

https://gerrit.wikimedia.org/r/1240647

Change #1240647 merged by jenkins-bot:

[mediawiki/core@master] Fix UserRequirementsConditionChecker if condition is empty array

https://gerrit.wikimedia.org/r/1240647

Change #1240231 merged by jenkins-bot:

[mediawiki/extensions/OATHAuth@master] Support whole-wikifarm checks for mandatory 2FA

https://gerrit.wikimedia.org/r/1240231