This commit fixes a bug that could occur when GeoIP
returns a continent code ("EU" or "AN") instead of a
country code. The previous implementation would
block users in this case since the country code
was not on the whitelist (consisting of all known
country codes). The new implementation allows user
access by default if we don't recognize the country code.
The new "country access" implementation replaces the old
implementation. Middleware and tests have been updated
accordingly, but deprecated models are preserved
for backwards compatibility.
Add history table for course access rule changes.
Provide test utility for simulating restricted access.
Provide `redirect_if_blocked` method for integration with other
parts of the system (will be used for blocking enrollment).
Add info-level logging explaining when and why users are blocked.
Add Django admin UI for configuring country access
Migrate existing embargo rules into the new tables.
ECOM-996: updated the middleware to use new models and access rules
ECOM-996: added the flag to support old and new formats
ECOM-996: added the api layer for country access settings
ECOM-996: added the api layer for country access settings
ECOM-996 implementing the white and blacklist checks.
ECOM-996 minor re-factoring in api.
ECOM-996 minor re-factoring in api.
ECOM-1025 refactoring the code according to PR feedback.
ECOM-1025 refactoring the code according to PR feedback.
ECOM-1025 deleting cache in model save and delete methods
ECOM-1025 adding basic api test cases file.
ECOM-1025 refactoring the code according to PR feedback.
ECOM-1025 refactoring the code according to PR feedback.
ECOM-1025 refactoring the code according to PR feedback. adding the test cases.
ECOM-1025 removing extra line
ECOM-1025 removing un-used function.
ECOM-1025 removing un-used function.
ECOM-1025 re-factor the code.
ECOM-1025 re-name the test file to test_middleware_access_rules.py. we already had old test_middleware.py
ECOM-1025 adding test cases for newly added models.
ECOM-1025 adding test cases and resolve conflicts.
ECOM-1025 fixing the quality and pep-8 issues.
ECOM-1025 re-factoring the code according to the PR feedback.
ECOM-1025 re-name the variable name.
ECOM-1025 removing the _check_ip_lists and its test cases. also added few missing scenarios test cases.
ECOM-1025 removing un-used line.
This commit updates common/djangoapps.
These keys are now objects with a limited interface, and the particular
internal representation is managed by the data storage layer (the
modulestore).
For the LMS, there should be no outward-facing changes to the system.
The keys are, for now, a change to internal representation only. For
Studio, the new serialized form of the keys is used in urls, to allow
for further migration in the future.
Co-Author: Andy Armstrong <andya@edx.org>
Co-Author: Christina Roberts <christina@edx.org>
Co-Author: David Baumgold <db@edx.org>
Co-Author: Diana Huang <dkh@edx.org>
Co-Author: Don Mitchell <dmitchell@edx.org>
Co-Author: Julia Hansbrough <julia@edx.org>
Co-Author: Nimisha Asthagiri <nasthagiri@edx.org>
Co-Author: Sarina Canelake <sarina@edx.org>
[LMS-2370]
Allows specification of countries to embargo, what course(s) should
apply embargo restrictions, and whitelist/blacklist capability for
specific individual IP addresses.
Adds configurable middleware in common/djangoapps/embargo that
allows specific courses to comply with US Export regulations by
embargoing students from specific countries, whilst simultaneously
allowing other courses to be freely open to all.