Hide auth fields / buttons based on server auth settings
Some checks failed
LANCommander Release / prep (push) Failing after 12s
LANCommander Release / build_launcher_linux_x64 (push) Has been skipped
LANCommander Release / build_launcher_osx_arm64 (push) Has been skipped
LANCommander Release / build_launcher_osx_x64 (push) Has been skipped
LANCommander Release / build_launcher_win_arm64 (push) Has been skipped
LANCommander Release / build_launcher_win_x64 (push) Has been skipped
LANCommander Release / build_packager (push) Has been skipped
LANCommander Release / build_release (push) Has been skipped
LANCommander Release / build_server_linux_arm64 (push) Has been skipped
LANCommander Release / build_server_linux_x64 (push) Has been skipped
LANCommander Release / build_server_osx_arm64 (push) Has been skipped
LANCommander Release / build_server_osx_x64 (push) Has been skipped
LANCommander Release / build_server_win_arm64 (push) Has been skipped
LANCommander Release / build_server_win_x64 (push) Has been skipped
LANCommander Release / build_launcher_linux_arm64 (push) Has been skipped
Some checks failed
LANCommander Release / prep (push) Failing after 12s
LANCommander Release / build_launcher_linux_x64 (push) Has been skipped
LANCommander Release / build_launcher_osx_arm64 (push) Has been skipped
LANCommander Release / build_launcher_osx_x64 (push) Has been skipped
LANCommander Release / build_launcher_win_arm64 (push) Has been skipped
LANCommander Release / build_launcher_win_x64 (push) Has been skipped
LANCommander Release / build_packager (push) Has been skipped
LANCommander Release / build_release (push) Has been skipped
LANCommander Release / build_server_linux_arm64 (push) Has been skipped
LANCommander Release / build_server_linux_x64 (push) Has been skipped
LANCommander Release / build_server_osx_arm64 (push) Has been skipped
LANCommander Release / build_server_osx_x64 (push) Has been skipped
LANCommander Release / build_server_win_arm64 (push) Has been skipped
LANCommander Release / build_server_win_x64 (push) Has been skipped
LANCommander Release / build_launcher_linux_arm64 (push) Has been skipped
This commit is contained in:
parent
b6e674e2eb
commit
46801dd468
2 changed files with 39 additions and 7 deletions
|
|
@ -32,15 +32,18 @@ public partial class LoginViewModel : ViewModelBase
|
|||
private string _passwordConfirmation = string.Empty;
|
||||
|
||||
[ObservableProperty]
|
||||
[NotifyPropertyChangedFor(nameof(ShowPasswordConfirmation))]
|
||||
private bool _isRegistering;
|
||||
|
||||
[ObservableProperty]
|
||||
[NotifyPropertyChangedFor(nameof(ShowRegisterToggle))]
|
||||
private bool _allowRegistration = true;
|
||||
|
||||
[ObservableProperty]
|
||||
private string _statusMessage = string.Empty;
|
||||
|
||||
[ObservableProperty]
|
||||
[NotifyPropertyChangedFor(nameof(ShowPrimaryButtons))]
|
||||
private bool _isLoading;
|
||||
|
||||
[ObservableProperty]
|
||||
|
|
@ -53,10 +56,33 @@ public partial class LoginViewModel : ViewModelBase
|
|||
private bool _isServerOffline;
|
||||
|
||||
[ObservableProperty]
|
||||
[NotifyPropertyChangedFor(nameof(ShowCredentialFields))]
|
||||
[NotifyPropertyChangedFor(nameof(ShowPasswordConfirmation))]
|
||||
[NotifyPropertyChangedFor(nameof(ShowPrimaryButtons))]
|
||||
[NotifyPropertyChangedFor(nameof(ShowRegisterToggle))]
|
||||
[NotifyPropertyChangedFor(nameof(ShowProviderButtons))]
|
||||
[NotifyPropertyChangedFor(nameof(ShowProviderSeparator))]
|
||||
private bool _autoRedirectToProvider;
|
||||
|
||||
public ObservableCollection<AuthenticationProvider> AuthenticationProviders { get; } = new();
|
||||
|
||||
// When auto-redirect is enabled, the username/password login path is hidden entirely.
|
||||
public bool ShowCredentialFields => !AutoRedirectToProvider;
|
||||
|
||||
public bool ShowPasswordConfirmation => IsRegistering && !AutoRedirectToProvider;
|
||||
|
||||
public bool ShowPrimaryButtons => !IsLoading && !AutoRedirectToProvider;
|
||||
|
||||
public bool ShowRegisterToggle => AllowRegistration && !AutoRedirectToProvider;
|
||||
|
||||
// Hide provider buttons only in the case the launcher auto-redirects (auto-redirect on + exactly one provider).
|
||||
public bool ShowProviderButtons => AutoRedirectToProvider
|
||||
? AuthenticationProviders.Count > 1
|
||||
: AuthenticationProviders.Count >= 1;
|
||||
|
||||
// The "or" separator only makes sense when both credential fields and provider buttons are shown.
|
||||
public bool ShowProviderSeparator => !AutoRedirectToProvider && ShowProviderButtons;
|
||||
|
||||
public event EventHandler? LoginSucceeded;
|
||||
public event EventHandler? ChangeServerRequested;
|
||||
|
||||
|
|
@ -71,6 +97,12 @@ public partial class LoginViewModel : ViewModelBase
|
|||
_authenticationClient = authenticationClient;
|
||||
_settingsProvider = settingsProvider;
|
||||
|
||||
AuthenticationProviders.CollectionChanged += (_, _) =>
|
||||
{
|
||||
OnPropertyChanged(nameof(ShowProviderButtons));
|
||||
OnPropertyChanged(nameof(ShowProviderSeparator));
|
||||
};
|
||||
|
||||
ServerAddress = _connectionClient.GetServerAddress()?.ToString() ?? "Not connected";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@
|
|||
</Border>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Spacing="8">
|
||||
<StackPanel Spacing="8" IsVisible="{Binding ShowCredentialFields}">
|
||||
<TextBlock Text="Username" FontWeight="SemiBold" Foreground="White" />
|
||||
<TextBox x:Name="UsernameTextBox"
|
||||
Watermark="Enter your username"
|
||||
|
|
@ -83,7 +83,7 @@
|
|||
</TextBox>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8">
|
||||
<StackPanel Spacing="8" IsVisible="{Binding ShowCredentialFields}">
|
||||
<TextBlock Text="Password" FontWeight="SemiBold" Foreground="White" />
|
||||
<TextBox Watermark="Enter your password"
|
||||
Classes="Glass"
|
||||
|
|
@ -96,7 +96,7 @@
|
|||
</TextBox>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Spacing="8" IsVisible="{Binding IsRegistering}">
|
||||
<StackPanel Spacing="8" IsVisible="{Binding ShowPasswordConfirmation}">
|
||||
<TextBlock Text="Confirm Password" FontWeight="SemiBold" Foreground="White" />
|
||||
<TextBox Watermark="Confirm your password"
|
||||
Classes="Glass"
|
||||
|
|
@ -109,7 +109,7 @@
|
|||
</TextBox>
|
||||
</StackPanel>
|
||||
|
||||
<Panel IsVisible="{Binding !IsLoading}">
|
||||
<Panel IsVisible="{Binding ShowPrimaryButtons}">
|
||||
<Button Command="{Binding LoginCommand}"
|
||||
HorizontalAlignment="Stretch"
|
||||
HorizontalContentAlignment="Center"
|
||||
|
|
@ -154,7 +154,7 @@
|
|||
Background="Transparent"
|
||||
BorderThickness="0"
|
||||
Cursor="Hand"
|
||||
IsVisible="{Binding AllowRegistration}"
|
||||
IsVisible="{Binding ShowRegisterToggle}"
|
||||
IsEnabled="{Binding !IsLoading}">
|
||||
<Panel>
|
||||
<TextBlock Text="Don't have an account? Register"
|
||||
|
|
@ -173,8 +173,8 @@
|
|||
</Button>
|
||||
|
||||
<StackPanel IsVisible="{Binding !IsRegistering}" Spacing="12">
|
||||
<StackPanel IsVisible="{Binding AuthenticationProviders.Count}" Spacing="12">
|
||||
<Grid ColumnDefinitions="*,Auto,*" Margin="0,4">
|
||||
<StackPanel IsVisible="{Binding ShowProviderButtons}" Spacing="12">
|
||||
<Grid ColumnDefinitions="*,Auto,*" Margin="0,4" IsVisible="{Binding ShowProviderSeparator}">
|
||||
<Separator Grid.Column="0" VerticalAlignment="Center" />
|
||||
<TextBlock Grid.Column="1" Text="or" Foreground="White" Opacity="0.5" Margin="12,0" FontSize="12" />
|
||||
<Separator Grid.Column="2" VerticalAlignment="Center" />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue