37 lignes
824 o
Go
37 lignes
824 o
Go
|
package oauth_server
|
||
|
|
||
|
import (
|
||
|
"github.com/NyaaPantsu/nyaa/models"
|
||
|
"github.com/ory/fosite"
|
||
|
"github.com/pkg/errors"
|
||
|
)
|
||
|
|
||
|
type modelAbstract interface {
|
||
|
TableName() string
|
||
|
ToRequest(session fosite.Session, cm models.Manager) (*fosite.Request, error)
|
||
|
}
|
||
|
|
||
|
func SelectModel(table string, data models.OauthAbstract) modelAbstract {
|
||
|
|
||
|
switch table {
|
||
|
case "oidc":
|
||
|
return &models.OpenID{data}
|
||
|
case "access":
|
||
|
return &models.Access{data}
|
||
|
case "refresh":
|
||
|
return &models.Refresh{data}
|
||
|
case "code":
|
||
|
return &models.Code{data}
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func FindBySignature(signature string, table string) (modelAbstract, error) {
|
||
|
d := SelectModel(table, models.OauthAbstract{})
|
||
|
err := models.ORM.Where("signature = ?", signature).Find(d).Error
|
||
|
if err != nil {
|
||
|
return nil, errors.Wrap(fosite.ErrNotFound, "")
|
||
|
}
|
||
|
return d, nil
|
||
|
}
|