- The `scopes_form` partial can be used in the `admin/applications` view
as well
- Don't allow partials to access instance variables directly. Instead, pass
in the instance variables as local variables, and use `local_assigns.fetch`
to assert that the variables are passed in as expected.
- Change a few instances of `render :partial` to `render`
- Remove an instance of `required: false` in a view, since this is the default
- Inline many instances of a local variable (`ip = 'ip'`) in `auth_spec`
- The list of scopes that's displayed while creating a personal access
token is identical to the list that's displayed while creating an OAuth
application. Extract these into a partial.
- The list of scopes that's displayed while in the show page for an OAuth token
in the profile settings and admin settings are identical. Extract these into
a partial.
- Mainly whitespace changes.
- Require the migration adding the `scope` column to the
`personal_access_tokens` table to have downtime, since API calls will
fail if the new code is in place, but the migration hasn't run.
- Minor refactoring - load `@scopes` in a `before_action`, since we're
doing it in three different places.
Main idea is to keep left sidebar static so user is not confused by
changing context. Instead we put changing navigation with changing
content in one main block
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
- Some views had a "Close" button. We've removed this, because we don't
want users accidentally hiding the validation errors and not knowing
what needs to be fixed.
- Some views used `li`, some used `p`, some used `span`. We've
standardized on `li`.
- Some views only showed the first error. We've standardized on showing
all of them.
- Some views added an `#error_explanation` div, which we've made
standard.
Previously we were doing all of kinds of code gymnastics and flash abuse
in order to work with a Doorkeeper controller but have it _appear_ at
the `/profile/applications` path. Fortunately we can just tell Rails to
use a different controller to handle that route, and we get the best of
both worlds.