58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package auxhttp
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
func GetBearerToken(authHeader string) (string, error) {
|
|
var err error
|
|
var res string
|
|
|
|
const bearerKey = "Bearer"
|
|
const numWords = 2
|
|
|
|
authData := strings.SplitN(authHeader, " ", numWords)
|
|
if len(authData) < numWords {
|
|
err = errors.New("Authorization key and value not found")
|
|
return res, err
|
|
}
|
|
|
|
authKey := strings.TrimSpace(authData[0])
|
|
if authKey != bearerKey {
|
|
err = fmt.Errorf("Authorization type is different from %s", bearerKey)
|
|
return res, err
|
|
}
|
|
token := authData[1]
|
|
token = strings.TrimSpace(token)
|
|
|
|
if len(token) == 0 {
|
|
return res, errors.New("Lenght of authorization token must be greater zero")
|
|
}
|
|
res = token
|
|
return res, err
|
|
}
|
|
|
|
func HaveBearerToken(authHeader string) bool {
|
|
const bearerKey = "Bearer"
|
|
const numWords = 2
|
|
|
|
authData := strings.SplitN(authHeader, " ", numWords)
|
|
if len(authData) < numWords {
|
|
return false
|
|
}
|
|
|
|
authKey := strings.TrimSpace(authData[0])
|
|
if authKey != bearerKey {
|
|
return false
|
|
}
|
|
token := authData[1]
|
|
token = strings.TrimSpace(token)
|
|
|
|
if len(token) == 0 {
|
|
return false
|
|
}
|
|
return true
|
|
}
|