41 lines
1.4 KiB
Handlebars
41 lines
1.4 KiB
Handlebars
<StateChart @src={{chart}} as |State Guard Action dispatch state|>
|
|
|
|
<Guard @name="hasToken" @cond={{action 'hasToken'}} />
|
|
<Action @name="login" @exec={{action 'login'}} />
|
|
<Action @name="logout" @exec={{action 'logout'}} />
|
|
{{! This DataSource just permanently listens to any changes to the users }}
|
|
{{! token, whether thats a new token, a changed token or a deleted token }}
|
|
<DataSource
|
|
@src="settings://consul:token"
|
|
@onchange={{queue (action (mut token) value="data") (action dispatch "CHANGE") (action (mut previousToken) value="data")}}
|
|
/>
|
|
{{! This DataSink is just used for logging in from the form, }}
|
|
{{! or logging out via the exposed logout function }}
|
|
<DataSink
|
|
@sink="settings://consul:token"
|
|
as |sink|
|
|
>
|
|
{{yield}}
|
|
{{#let (hash
|
|
login=(action sink.open)
|
|
logout=(action sink.open null)
|
|
token=token
|
|
) (hash
|
|
AuthProfile=(component 'auth-profile' item=token)
|
|
AuthForm=(component 'auth-form' dc=dc nspace=nspace onsubmit=(action sink.open value="data"))
|
|
) as |api components|}}
|
|
<State @matches="authorized">
|
|
{{#yield-slot name="authorized"}}
|
|
{{yield api components}}
|
|
{{/yield-slot}}
|
|
</State>
|
|
|
|
<State @matches="unauthorized">
|
|
{{#yield-slot name="unauthorized"}}
|
|
{{yield api components}}
|
|
{{/yield-slot}}
|
|
</State>
|
|
{{/let}}
|
|
</DataSink>
|
|
</StateChart>
|