mirror of
https://github.com/thomiceli/opengist.git
synced 2025-05-13 15:52:11 +02:00
Fix Gitlab avatar (#461)
* Fix GitLab user avatar method * Fix size of Gitlab avatar
This commit is contained in:
parent
3c940cd81f
commit
0e9b778b45
@ -2,13 +2,17 @@ package oauth
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
gocontext "context"
|
gocontext "context"
|
||||||
|
gojson "encoding/json"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
"github.com/markbates/goth"
|
"github.com/markbates/goth"
|
||||||
"github.com/markbates/goth/gothic"
|
"github.com/markbates/goth/gothic"
|
||||||
"github.com/markbates/goth/providers/gitlab"
|
"github.com/markbates/goth/providers/gitlab"
|
||||||
|
"github.com/rs/zerolog/log"
|
||||||
"github.com/thomiceli/opengist/internal/config"
|
"github.com/thomiceli/opengist/internal/config"
|
||||||
"github.com/thomiceli/opengist/internal/db"
|
"github.com/thomiceli/opengist/internal/db"
|
||||||
"github.com/thomiceli/opengist/internal/web/context"
|
"github.com/thomiceli/opengist/internal/web/context"
|
||||||
"net/http"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type GitLabProvider struct {
|
type GitLabProvider struct {
|
||||||
@ -77,7 +81,34 @@ func (p *GitLabCallbackProvider) GetProviderUserSSHKeys() ([]string, error) {
|
|||||||
|
|
||||||
func (p *GitLabCallbackProvider) UpdateUserDB(user *db.User) {
|
func (p *GitLabCallbackProvider) UpdateUserDB(user *db.User) {
|
||||||
user.GitlabID = p.User.UserID
|
user.GitlabID = p.User.UserID
|
||||||
user.AvatarURL = urlJoin(config.C.GitlabUrl, "/uploads/-/system/user/avatar/", p.User.UserID, "/avatar.png") + "?width=400"
|
|
||||||
|
resp, err := http.Get(urlJoin(config.C.GitlabUrl, "/api/v4/avatar?size=400&email=", p.User.Email))
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("Cannot get user avatar from GitLab")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("Cannot read Gitlab response body")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var result map[string]interface{}
|
||||||
|
err = gojson.Unmarshal(body, &result)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("Cannot unmarshal Gitlab response body")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
field, ok := result["avatar_url"]
|
||||||
|
if !ok {
|
||||||
|
log.Error().Msg("Field 'avatar_url' not found in Gitlab JSON response")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
user.AvatarURL = field.(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewGitLabCallbackProvider(user *goth.User) CallbackProvider {
|
func NewGitLabCallbackProvider(user *goth.User) CallbackProvider {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user