2024-01-06 17:56:32 +00:00
|
|
|
package security
|
|
|
|
|
|
|
|
import (
|
2024-01-29 08:11:59 +00:00
|
|
|
"fmt"
|
2024-03-20 12:56:43 +00:00
|
|
|
|
2024-04-13 05:48:19 +00:00
|
|
|
"git.solsynth.dev/hydrogen/passport/pkg/models"
|
2024-01-06 17:56:32 +00:00
|
|
|
"github.com/samber/lo"
|
|
|
|
)
|
|
|
|
|
|
|
|
func VerifyFactor(factor models.AuthFactor, code string) error {
|
|
|
|
switch factor.Type {
|
|
|
|
case models.PasswordAuthFactor:
|
|
|
|
return lo.Ternary(
|
|
|
|
VerifyPassword(code, factor.Secret),
|
|
|
|
nil,
|
|
|
|
fmt.Errorf("invalid password"),
|
|
|
|
)
|
2024-01-29 08:11:59 +00:00
|
|
|
case models.EmailPasswordFactor:
|
|
|
|
return lo.Ternary(
|
|
|
|
code == factor.Secret,
|
|
|
|
nil,
|
|
|
|
fmt.Errorf("invalid verification code"),
|
|
|
|
)
|
2024-01-06 17:56:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|