mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-30 15:42:46 +00:00
98263a7de6
* start fixing up tests * fix up tests + automate with drone * fiddle with linting * messing about with drone.yml * some more fiddling * hmmm * add cache * add vendor directory * verbose * ci updates * update some little things * update sig
31 lines
819 B
Go
31 lines
819 B
Go
package generates
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"encoding/base64"
|
|
"strings"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/superseriousbusiness/oauth2/v4"
|
|
)
|
|
|
|
// NewAuthorizeGenerate create to generate the authorize code instance
|
|
func NewAuthorizeGenerate() *AuthorizeGenerate {
|
|
return &AuthorizeGenerate{}
|
|
}
|
|
|
|
// AuthorizeGenerate generate the authorize code
|
|
type AuthorizeGenerate struct{}
|
|
|
|
// Token based on the UUID generated token
|
|
func (ag *AuthorizeGenerate) Token(ctx context.Context, data *oauth2.GenerateBasic) (string, error) {
|
|
buf := bytes.NewBufferString(data.Client.GetID())
|
|
buf.WriteString(data.UserID)
|
|
token := uuid.NewMD5(uuid.Must(uuid.NewRandom()), buf.Bytes())
|
|
code := base64.URLEncoding.EncodeToString([]byte(token.String()))
|
|
code = strings.ToUpper(strings.TrimRight(code, "="))
|
|
|
|
return code, nil
|
|
}
|