Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions cms/envs/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,19 @@
'SHOW_FOOTER_LANGUAGE_SELECTOR': False,
'ENABLE_ENROLLMENT_RESET': False,
'DISABLE_MOBILE_COURSE_AVAILABLE': False,

# .. toggle_name: ENABLE_CHANGE_USER_PASSWORD_ADMIN
# .. toggle_implementation: DjangoSetting
# .. toggle_default: False
# .. toggle_description: Set to True to enable changing a user password through django admin. This is disabled by default because enabling allows a method to bypass password policy.
# .. toggle_category: admin
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2020-02-21
# .. toggle_expiration_date: None
# .. toggle_tickets: 'https://github.com/edx/edx-platform/pull/21616'
# .. toggle_status: supported
# .. toggle_warnings: None
'ENABLE_CHANGE_USER_PASSWORD_ADMIN': False,
}

ENABLE_JASMINE = False
Expand Down
3 changes: 2 additions & 1 deletion cms/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,9 @@

# The password pages in the admin tool are disabled so that all password
# changes go through our user portal and follow complexity requirements.
if not settings.FEATURES.get('ENABLE_CHANGE_USER_PASSWORD_ADMIN'):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add this flag to common.py for both the lms and cms envs, defaulting to False. Please also follow the feature flag annotation format (example: https://github.com/edx/edx-platform/blob/master/lms/envs/common.py#L180-L191)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @ormsbee ! I have added the flag to the common.py files and tidied the commits.

urlpatterns.append(url(r'^admin/auth/user/\d+/password/$', handler404))
urlpatterns.append(url(r'^admin/password_change/$', handler404))
urlpatterns.append(url(r'^admin/auth/user/\d+/password/$', handler404))
urlpatterns.append(url(r'^admin/', admin.site.urls))

# enable entrance exams
Expand Down
19 changes: 12 additions & 7 deletions common/djangoapps/student/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from config_models.admin import ConfigurationModelAdmin
from django import forms
from django.conf import settings
from django.contrib import admin
from django.contrib.admin.sites import NotRegistered
from django.contrib.admin.utils import unquote
Expand Down Expand Up @@ -289,13 +290,17 @@ class UserChangeForm(BaseUserChangeForm):
Override the default UserChangeForm such that the password field
does not contain a link to a 'change password' form.
"""
password = ReadOnlyPasswordHashField(
label=_("Password"),
help_text=_(
"Raw passwords are not stored, so there is no way to see this "
"user's password."
),
)
def __init__(self, *args, **kwargs):
super(UserChangeForm, self).__init__(*args, **kwargs)

if not settings.FEATURES.get('ENABLE_CHANGE_USER_PASSWORD_ADMIN'):
self.fields["password"] = ReadOnlyPasswordHashField(
label=_("Password"),
help_text=_(
"Raw passwords are not stored, so there is no way to see this "
"user's password."
),
)


class UserAdmin(BaseUserAdmin):
Expand Down
13 changes: 13 additions & 0 deletions lms/envs/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,19 @@
# Enable feature to remove enrollments and users. Used to reset state of master's integration environments
'ENABLE_ENROLLMENT_RESET': False,
'DISABLE_MOBILE_COURSE_AVAILABLE': False,

# .. toggle_name: ENABLE_CHANGE_USER_PASSWORD_ADMIN
# .. toggle_implementation: DjangoSetting
# .. toggle_default: False
# .. toggle_description: Set to True to enable changing a user password through django admin. This is disabled by default because enabling allows a method to bypass password policy.
# .. toggle_category: admin
# .. toggle_use_cases: open_edx
# .. toggle_creation_date: 2020-02-21
# .. toggle_expiration_date: None
# .. toggle_tickets: 'https://github.com/edx/edx-platform/pull/21616'
# .. toggle_status: supported
# .. toggle_warnings: None
'ENABLE_CHANGE_USER_PASSWORD_ADMIN': False,
}

# Settings for the course reviews tool template and identification key, set either to None to disable course reviews
Expand Down
12 changes: 9 additions & 3 deletions lms/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -773,11 +773,17 @@

if settings.DEBUG or settings.FEATURES.get('ENABLE_DJANGO_ADMIN_SITE'):
# Jasmine and admin

# The password pages in the admin tool are disabled so that all password
# changes go through our user portal and follow complexity requirements.
# The form to change another user's password is conditionally enabled
# for backwards compatibility.
if not settings.FEATURES.get('ENABLE_CHANGE_USER_PASSWORD_ADMIN'):
urlpatterns += [
url(r'^admin/auth/user/\d+/password/$', handler404),
]
urlpatterns += [
# The password pages in the admin tool are disabled so that all password
# changes go through our user portal and follow complexity requirements.
url(r'^admin/password_change/$', handler404),
url(r'^admin/auth/user/\d+/password/$', handler404),
# We are enforcing users to login through third party auth in site's
# login page so we are disabling the admin panel's login page.
url(r'^admin/login/$', redirect_to_lms_login),
Expand Down