add default avatar
This commit is contained in:
+8
-3
@@ -43,8 +43,9 @@ var opts struct {
|
||||
FacebookCID string `long:"facebook-cid" env:"REMARK_FACEBOOK_CID" description:"Facebook OAuth client ID"`
|
||||
FacebookCSEC string `long:"facebook-csec" env:"REMARK_FACEBOOK_CSEC" description:"Facebook OAuth client secret"`
|
||||
|
||||
AvatarStore string `long:"avatars" env:"AVATAR_STORE" default:"./var/avatars" description:"path to avatars directory"`
|
||||
Port int `long:"port" env:"REMARK_PORT" default:"8080" description:"port"`
|
||||
AvatarStore string `long:"avatars" env:"AVATAR_STORE" default:"./var/avatars" description:"path to avatars directory"`
|
||||
DefaultAvatar string `long:"avatar-def" env:"AVATAR_DEF" default:"./var/avatars/remark.image" description:"default avatar"`
|
||||
Port int `long:"port" env:"REMARK_PORT" default:"8080" description:"port"`
|
||||
} `command:"server" description:"run server"`
|
||||
|
||||
ImportCommand struct {
|
||||
@@ -106,7 +107,11 @@ func main() {
|
||||
Exporter: &exporter,
|
||||
AuthProviders: makeAuthProviders(sessionStore),
|
||||
Cache: common.NewLoadingCache(4*time.Hour, 15*time.Minute, postFlushFn),
|
||||
AvatarProxy: avatar.Proxy{StorePath: opts.ServerCommand.AvatarStore, RoutePath: "/api/v1/avatar"},
|
||||
AvatarProxy: avatar.Proxy{
|
||||
StorePath: opts.ServerCommand.AvatarStore,
|
||||
RoutePath: "/api/v1/avatar",
|
||||
DefaultAvatar: opts.ServerCommand.DefaultAvatar,
|
||||
},
|
||||
}
|
||||
|
||||
if opts.DevMode {
|
||||
|
||||
@@ -34,7 +34,11 @@ type Proxy struct {
|
||||
|
||||
// Put gets original avatar url from user info and returns proxied
|
||||
func (p *Proxy) Put(u store.User) (avatarURL string, err error) {
|
||||
|
||||
if u.Picture == "" {
|
||||
if p.DefaultAvatar != "" {
|
||||
return p.RoutePath + "/" + p.DefaultAvatar, nil
|
||||
}
|
||||
return "", errors.Errorf("no picture for %s", u.ID)
|
||||
}
|
||||
|
||||
@@ -82,8 +86,14 @@ func (p *Proxy) Routes() chi.Router {
|
||||
avFile := path.Join(location, avatar)
|
||||
fh, err := os.Open(avFile)
|
||||
if err != nil {
|
||||
common.SendErrorJSON(w, r, http.StatusBadRequest, err, "can't load avatar")
|
||||
return
|
||||
if p.DefaultAvatar == "" {
|
||||
common.SendErrorJSON(w, r, http.StatusBadRequest, err, "can't load avatar")
|
||||
return
|
||||
}
|
||||
if fh, err = os.Open(path.Join(p.StorePath, p.DefaultAvatar)); err != nil {
|
||||
common.SendErrorJSON(w, r, http.StatusBadRequest, err, "can't load default avatar")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
defer func() {
|
||||
|
||||
Reference in New Issue
Block a user