add preparation for disqus oauth2
This commit is contained in:
@@ -43,6 +43,8 @@ var opts struct {
|
||||
GithubCSEC string `long:"github-csec" env:"REMARK_GITHUB_CSEC" description:"Github OAuth client secret"`
|
||||
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"`
|
||||
DisqusCID string `long:"disqus-cid" env:"REMARK_DISQUS_CID" description:"Disqus OAuth client ID"`
|
||||
DisqusCSEC string `long:"disqus-csec" env:"REMARK_DISQUS_CSEC" description:"Disqus OAuth client secret"`
|
||||
|
||||
AvatarStore string `long:"avatars" env:"AVATAR_STORE" default:"./var/avatars" description:"path to avatars directory"`
|
||||
DefaultAvatar string `long:"avatar-def" env:"AVATAR_DEF" default:"remark.image" description:"default avatar"`
|
||||
@@ -210,6 +212,9 @@ func makeAuthProviders(sessionStore sessions.Store, avatarProxy *auth.AvatarProx
|
||||
if srvOpts.FacebookCID != "" && srvOpts.FacebookCSEC != "" {
|
||||
providers = append(providers, auth.NewFacebook(makeParams(srvOpts.FacebookCID, srvOpts.FacebookCSEC)))
|
||||
}
|
||||
if srvOpts.DisqusCID != "" && srvOpts.DisqusCSEC != "" {
|
||||
providers = append(providers, auth.NewDisqus(makeParams(srvOpts.DisqusCID, srvOpts.DisqusCSEC)))
|
||||
}
|
||||
if len(providers) == 0 {
|
||||
log.Printf("[WARN] no auth providers defined")
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/oauth2"
|
||||
"golang.org/x/oauth2/facebook"
|
||||
"golang.org/x/oauth2/github"
|
||||
"golang.org/x/oauth2/google"
|
||||
@@ -98,3 +99,30 @@ func NewFacebook(p Params) Provider {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// NewDisqus makes disqus oauth2 provider. TODO: WIP - seems to need client_id param
|
||||
func NewDisqus(p Params) Provider {
|
||||
return initProvider(p, Provider{
|
||||
Name: "disqus",
|
||||
Endpoint: oauth2.Endpoint{
|
||||
AuthURL: "https://disqus.com/api/oauth/2.0/authorize/",
|
||||
TokenURL: "https://disqus.com/api/oauth/2.0/access_token/",
|
||||
},
|
||||
RedirectURL: p.RemarkURL + "/auth/disqus/callback",
|
||||
Scopes: []string{"read"},
|
||||
InfoURL: "https://disqus.com/api/3.0/users/details.json",
|
||||
Store: p.SessionStore,
|
||||
MapUser: func(data userData, _ []byte) store.User {
|
||||
userInfo := store.User{
|
||||
ID: "disqus_" + data.value("login"),
|
||||
Name: data.value("name"),
|
||||
Picture: data.value("avatar_url"),
|
||||
Profile: data.value("html_url"),
|
||||
}
|
||||
if userInfo.Name == "" {
|
||||
userInfo.Name = userInfo.ID
|
||||
}
|
||||
return userInfo
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
+7
-4
@@ -15,15 +15,16 @@ services:
|
||||
max-file: "5"
|
||||
|
||||
# uncomment to expose directly (no proxy)
|
||||
# ports:
|
||||
# - "8080:8080"
|
||||
ports:
|
||||
- "80:8080"
|
||||
|
||||
environment:
|
||||
- REMARK_URL=https://demo.remark42.com
|
||||
# - REMARK_URL=https://demo.remark42.com
|
||||
- REMARK_URL
|
||||
- BOLTDB_PATH=/srv/var/db
|
||||
- BACKUP_PATH=/srv/var/backup
|
||||
- SESSION_STORE=/srv/var/session
|
||||
- DEV_PASSWD=password # development mode, be careful!
|
||||
# - DEV_PASSWD=password # development mode, be careful!
|
||||
- DEBUG=true
|
||||
- REMARK_GOOGLE_CID
|
||||
- REMARK_GOOGLE_CSEC
|
||||
@@ -31,6 +32,8 @@ services:
|
||||
- REMARK_GITHUB_CSEC
|
||||
- REMARK_FACEBOOK_CID
|
||||
- REMARK_FACEBOOK_CSEC
|
||||
- REMARK_DISQUS_CID
|
||||
- REMARK_DISQUS_CSEC
|
||||
volumes:
|
||||
- ./var:/srv/var
|
||||
- ./web:/srv/web # maps web directory directly to propagate local changes to container without redeploy
|
||||
|
||||
Reference in New Issue
Block a user