login: implement remoteauth (QR code login)

This commit is contained in:
Skip R
2025-12-18 18:28:07 -08:00
parent 099b464f84
commit b18d908489
2 changed files with 201 additions and 4 deletions

View File

@@ -27,6 +27,11 @@ const LoginStepIDComplete = "fi.mau.discord.login.complete"
func (d *DiscordConnector) GetLoginFlows() []bridgev2.LoginFlow {
return []bridgev2.LoginFlow{
{
ID: LoginFlowIDRemoteAuth,
Name: "QR Code",
Description: "Scan a QR code with the Discord mobile app to log in.",
},
{
ID: LoginFlowIDToken,
Name: "Token",
@@ -36,9 +41,12 @@ func (d *DiscordConnector) GetLoginFlows() []bridgev2.LoginFlow {
}
func (d *DiscordConnector) CreateLogin(ctx context.Context, user *bridgev2.User, flowID string) (bridgev2.LoginProcess, error) {
if flowID != LoginFlowIDToken {
return nil, fmt.Errorf("unknown login flow ID")
switch flowID {
case LoginFlowIDToken:
return &DiscordTokenLogin{connector: d, User: user}, nil
case LoginFlowIDRemoteAuth:
return &DiscordRemoteAuthLogin{connector: d, User: user}, nil
default:
return nil, fmt.Errorf("unknown discord login flow id")
}
return &DiscordTokenLogin{connector: d, User: user}, nil
}