Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ui, epic] SSO and Auth improvements #15110

Merged
merged 7 commits into from
Nov 28, 2022
Merged

[ui, epic] SSO and Auth improvements #15110

merged 7 commits into from
Nov 28, 2022

Conversation

philrenaud
Copy link
Contributor

(UI Epic branch)

@github-actions
Copy link

github-actions bot commented Nov 2, 2022

Ember Asset Size action

As of ace1b60

Files that got Bigger 🚨:

File raw gzip
nomad-ui.js +21.5 kB +3.33 kB
vendor.js +3 B +6 B
nomad-ui.css +1.79 kB +433 B

Files that stayed the same size 🤷‍:

File raw gzip
vendor.css 0 B 0 B

@philrenaud philrenaud changed the title [ui] SSO and Auth improvements [ui, epic] SSO and Auth improvements Nov 2, 2022
* Basic dropdown styles

* Some cleanup

* delog

* Default nomad hover state styles

* Component separation-of-concerns and acceptance tests for auth dropdown

* lintfix
* Handle error states generally

* Dont direct, just redirect

* no longer need explicit error on controller

* Redirect on token-doesnt-exist

* Forgot to import our time lib

* Linting on _blank

* Redirect tests

* changelog
* Handle error states generally

* Dont direct, just redirect

* no longer need explicit error on controller

* Linting on _blank

* Custom notification actions and shift the template to within an else block

* Lintfix

* Make the closeAction optional

* changelog

* Add a mirage token that will always expire in 11 minutes

* Test for token expiry with ember concurrency waiters

* concurrency handling for earlier test, and button redirect test
…e UI (#15114)

* Remove top nav link if ACLs disabled

* Change to an enabled-by-default model since you get no agent config when ACLs are disabled but you lack a token

* PR feedback addressed; down with double negative conditionals

* lintfix

* ember getter instead of ?.prop
@github-actions
Copy link

github-actions bot commented Nov 3, 2022

Ember Test Audit comparison

main ace1b60 change
passes 1425 1435 +10
failures 0 0 0
flaky 0 0 0
duration 10m 33s 995ms 11m 41s 774ms +1m 07s 779ms

* Big ol first pass at a redirect sign in flow

* dont recursively add queryparams on redirect

* Passing state and code qps

* In which I go off the deep end and embed a faux provider page in the nomad ui

* Buggy but self-contained flow

* Flow auto-delay added and a little more polish to resetting token

* secret passing turned to accessor passing

* Handle SSO Failure

* General cleanup and test fix

* Lintfix

* SSO flow acceptance tests

* Percy snapshots added

* Explicitly note the OIDC test route is mirage only

* Handling failure case for complete-auth

* Leentfeex
* styling and moving columns around

* autofocus and enter press handling

* Styles refined

* Split up manager and regular tests

* Standardizing to a binary status state
* Serializer for unique-by-name

* Use @classic because of class extension
Copy link
Contributor

@ChaiWithJai ChaiWithJai left a comment

Choose a reason for hiding this comment

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

LGTM. Left a few questions.


@alias('id') accessor;

get isExpired() {
return this.expirationTime && this.expirationTime < new Date();
Copy link
Contributor

Choose a reason for hiding this comment

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

question: ember-data sets the date attribute to use ISO 8601 format whereas JavaScript's Date constructor gives us a Unix time. Should we have concern re: date formatting in this comparison?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hm, this is a good concern to raise but in manual and acceptance testing I have found that the comparison works as expected.

Comment on lines +147 to +148
e.detail === 'ACL token expired' ||
e.detail === 'ACL token not found'
Copy link
Contributor

Choose a reason for hiding this comment

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

question: Does this mean we're hard coding the error message that we're expecting from the API here? And thus, if they added a period to the end of the message, we wouldn't be able to match here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's right — this is a pretty fragile way of doing a match. Luckily this PR also includes visual diff and acceptance tests for this situation, so if this ever changes we should be getting plenty of alarm bells.

Comment on lines +8 to +10
return {
authMethods: this.store.findAll('auth-method'),
};
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: If this is the only property returned on the model couldn't we just write:

async model() {
  return this.store.findAll('auth-method')
}

Copy link
Contributor Author

Choose a reason for hiding this comment

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

For sure, but I kind of like the explicitness of asking for this.model.authMethods on a tokens page.

(If you asked me in a vacuum what this.model would iterate on a page called tokens, I would not assume it would be auth-methods, so IMO better to make it explicit)

e.detail === 'ACL token not found'
)
) {
this.router.transitionTo('settings.tokens');
Copy link
Contributor

Choose a reason for hiding this comment

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

question: Should a flash message accompany this transition?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Token errors (not found, expired) are shown as part of the Tokens service — I've added screenshots and some explanations why I'm using errors in service/model instead of here in the application route in the PR notes: #15073

@philrenaud philrenaud merged commit 79afeee into main Nov 28, 2022
@philrenaud philrenaud deleted the f-ui/sso branch November 28, 2022 15:44
@github-actions
Copy link

I'm going to lock this pull request because it has been closed for 120 days ⏳. This helps our maintainers find and focus on the active contributions.
If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 30, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants