In the past onceoff was forcing inline download of gravatars,
this can be so expensive that it will never finish
This fix ensures it only marks avatars stale which will be picked
up by regular schedules
There was some old code that restricted a percentage of a themes code from
admin, only when admin was refreshed, this leads to lots of confusion
Conditional is now removed
This splits off the logic between SSO keys used incoming vs outgoing, it allows to far better restrict who is allowed to log in using a site.
This allows for better auditing of the SSO provider feature
This change maintains backwards compatibility to allow you to remove a
single user from a group but allows you to specify a comma separated list
of users for bulk removal from a group.
Also it extracts out common functionality for fetching users from params
used in bulk adding users so it can also be used for removing users.
This is how `loadScript(url)` currently deals with multiple concurrent requests
1. Check existing `<script>` tags, and mark existing scripts (other than the
input `url`) as loaded
2. Find "true" `url` of the requested resource (CDN, subfolder path, etc)
3. Check if we have loaded the resource with that "true" `url`, and resolve
immediately if we have
4. Otherwise insert a `<script>` tag with the "true" `url` to load it
For example, in a subfolder install:
- Input `url` = `/javascripts/script.js`
- "True" `url` = `/subfolder/javascript/script.js`
And the _very_ subtle bug here is that we should use also use the true `url`
for step (1), because:
- Since the input and true `url` are different, we mistakenly mark the true
`url` as loaded in step one
- After finding the true `url`, and setting `loaded[trueUrl] = true` in (1), we
resolve the promise prematurely, when the resource could still be loading
* FEATURE: Added MaxMindDb to resolve IP information.
* FEATURE: Added browser detection based on user agent.
* FEATURE: Added recently used devices in user preferences.
* DEV: Added acceptance test for recently used devices.
* UX: Do not show 'Show more' button if there aren't more tokens.
* DEV: Fix unit tests.
* DEV: Make changes after code review.
* Add more detailed unit tests.
* Improve logging messages.
* Minor coding style fixes.
* DEV: Use DropdownSelectBoxComponent and run Prettier.
* DEV: Fix unit tests.