2024-12-06 18:41:03 +00:00
|
|
|
package providers
|
2024-10-25 15:08:56 +01:00
|
|
|
|
|
|
|
import (
|
2025-03-13 22:41:57 +00:00
|
|
|
"context"
|
2024-12-06 18:41:03 +00:00
|
|
|
"github.com/1f349/lavender/auth"
|
2025-01-26 01:47:46 +00:00
|
|
|
"github.com/1f349/lavender/auth/authContext"
|
2025-02-24 17:17:28 +00:00
|
|
|
"github.com/1f349/lavender/auth/process"
|
2025-03-13 22:41:57 +00:00
|
|
|
"github.com/1f349/lavender/database"
|
2024-10-25 15:08:56 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
type passkeyLoginDB interface {
|
2025-03-13 22:41:57 +00:00
|
|
|
GetUser(ctx context.Context, subject string) (database.User, error)
|
2024-10-25 15:08:56 +01:00
|
|
|
}
|
|
|
|
|
2025-01-19 12:04:25 +00:00
|
|
|
var (
|
|
|
|
_ auth.Provider = (*PasskeyLogin)(nil)
|
|
|
|
_ auth.Button = (*PasskeyLogin)(nil)
|
|
|
|
)
|
2024-10-25 15:08:56 +01:00
|
|
|
|
|
|
|
type PasskeyLogin struct {
|
|
|
|
DB passkeyLoginDB
|
|
|
|
}
|
|
|
|
|
2025-02-24 17:17:28 +00:00
|
|
|
func (p *PasskeyLogin) AccessState() process.State { return process.StateUnauthorized }
|
2024-10-25 15:08:56 +01:00
|
|
|
|
|
|
|
func (p *PasskeyLogin) Name() string { return "passkey" }
|
|
|
|
|
2025-03-14 14:46:54 +00:00
|
|
|
func (p *PasskeyLogin) String() string { return "%Provider(passkey)" }
|
|
|
|
|
2025-01-26 01:47:46 +00:00
|
|
|
func (p *PasskeyLogin) RenderButtonTemplate(ctx authContext.TemplateContext) {
|
|
|
|
// provide something non-nil
|
|
|
|
ctx.Render(struct{}{})
|
2025-01-19 12:04:25 +00:00
|
|
|
}
|