fix incorrect gui refresh if theme is changed
implement custom clientstore add new Password page if password is set force entering password to successfully receive the token add a new unsafe api call for init call only
This commit is contained in:
@ -16,6 +16,7 @@ const (
|
||||
TagNode = iota
|
||||
SettingsNode = iota
|
||||
ActorNode = iota
|
||||
InitNode = iota
|
||||
)
|
||||
|
||||
type actionStruct struct {
|
||||
@ -42,6 +43,9 @@ func ServerInit(port uint16) {
|
||||
http.Handle(APIPREFIX+"/settings", oauth.ValidateToken(settingsHandler))
|
||||
http.Handle(APIPREFIX+"/actor", oauth.ValidateToken(actorHandler))
|
||||
|
||||
// initialization api calls to check if password is neccessaray
|
||||
http.Handle(APIPREFIX+"/init", http.HandlerFunc(initHandler))
|
||||
|
||||
// initialize oauth service and add corresponding auth routes
|
||||
oauth.InitOAuth()
|
||||
|
||||
@ -85,6 +89,10 @@ func settingsHandler(rw http.ResponseWriter, req *http.Request) {
|
||||
handlefunc(rw, req, SettingsNode)
|
||||
}
|
||||
|
||||
func initHandler(rw http.ResponseWriter, req *http.Request) {
|
||||
handlefunc(rw, req, InitNode)
|
||||
}
|
||||
|
||||
func handlefunc(rw http.ResponseWriter, req *http.Request, node int) {
|
||||
// only allow post requests
|
||||
if req.Method != "POST" {
|
||||
|
33
apiGo/api/Init.go
Normal file
33
apiGo/api/Init.go
Normal file
@ -0,0 +1,33 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"openmediacenter/apiGo/database/settings"
|
||||
)
|
||||
|
||||
func AddInitHandlers() {
|
||||
passwordNeeded()
|
||||
}
|
||||
|
||||
func passwordNeeded() {
|
||||
AddHandler("loadInitialData", InitNode, nil, func() []byte {
|
||||
sett := settings.LoadSettings()
|
||||
|
||||
type InitialDataTypeResponse struct {
|
||||
DarkMode bool
|
||||
Pasword bool
|
||||
MediacenterName string
|
||||
VideoPath string
|
||||
}
|
||||
|
||||
res := InitialDataTypeResponse{
|
||||
DarkMode: sett.DarkMode,
|
||||
Pasword: sett.Pasword != "-1",
|
||||
MediacenterName: sett.Mediacenter_name,
|
||||
VideoPath: sett.VideoPath,
|
||||
}
|
||||
|
||||
str, _ := json.Marshal(res)
|
||||
return str
|
||||
})
|
||||
}
|
@ -1,8 +1,6 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"openmediacenter/apiGo/api/types"
|
||||
"openmediacenter/apiGo/database"
|
||||
"openmediacenter/apiGo/videoparser"
|
||||
@ -15,41 +13,6 @@ func AddSettingsHandlers() {
|
||||
}
|
||||
|
||||
func getSettingsFromDB() {
|
||||
AddHandler("loadInitialData", SettingsNode, nil, func() []byte {
|
||||
query := "SELECT DarkMode, password, mediacenter_name, video_path from settings"
|
||||
|
||||
type InitialDataType struct {
|
||||
DarkMode int
|
||||
Pasword int
|
||||
Mediacenter_name string
|
||||
VideoPath string
|
||||
}
|
||||
|
||||
result := InitialDataType{}
|
||||
|
||||
err := database.QueryRow(query).Scan(&result.DarkMode, &result.Pasword, &result.Mediacenter_name, &result.VideoPath)
|
||||
if err != nil {
|
||||
fmt.Println("error while parsing db data: " + err.Error())
|
||||
}
|
||||
|
||||
type InitialDataTypeResponse struct {
|
||||
DarkMode bool
|
||||
Pasword bool
|
||||
Mediacenter_name string
|
||||
VideoPath string
|
||||
}
|
||||
|
||||
res := InitialDataTypeResponse{
|
||||
DarkMode: result.DarkMode != 0,
|
||||
Pasword: result.Pasword != -1,
|
||||
Mediacenter_name: result.Mediacenter_name,
|
||||
VideoPath: result.VideoPath,
|
||||
}
|
||||
|
||||
str, _ := json.Marshal(res)
|
||||
return str
|
||||
})
|
||||
|
||||
AddHandler("loadGeneralSettings", SettingsNode, nil, func() []byte {
|
||||
result := database.GetSettings()
|
||||
return jsonify(result)
|
||||
|
56
apiGo/api/oauth/CustomClientStore.go
Normal file
56
apiGo/api/oauth/CustomClientStore.go
Normal file
@ -0,0 +1,56 @@
|
||||
package oauth
|
||||
|
||||
import (
|
||||
"gopkg.in/oauth2.v3"
|
||||
"openmediacenter/apiGo/database/settings"
|
||||
)
|
||||
|
||||
type CustomClientStore struct {
|
||||
oauth2.ClientStore
|
||||
}
|
||||
|
||||
type CustomClientInfo struct {
|
||||
oauth2.ClientInfo
|
||||
ID string
|
||||
Secret string
|
||||
Domain string
|
||||
UserID string
|
||||
}
|
||||
|
||||
func NewCustomStore() oauth2.ClientStore {
|
||||
s := new(CustomClientStore)
|
||||
return s
|
||||
}
|
||||
|
||||
func (a *CustomClientStore) GetByID(id string) (oauth2.ClientInfo, error) {
|
||||
password := settings.GetPassword()
|
||||
if password == nil {
|
||||
defaultpassword := "openmediacenter"
|
||||
password = &defaultpassword
|
||||
}
|
||||
|
||||
clientinfo := CustomClientInfo{
|
||||
ID: "openmediacenter",
|
||||
Secret: *password,
|
||||
Domain: "http://localhost:8081",
|
||||
UserID: "openmediacenter",
|
||||
}
|
||||
|
||||
return &clientinfo, nil
|
||||
}
|
||||
|
||||
func (a *CustomClientInfo) GetID() string {
|
||||
return a.ID
|
||||
}
|
||||
|
||||
func (a *CustomClientInfo) GetSecret() string {
|
||||
return a.Secret
|
||||
}
|
||||
|
||||
func (a *CustomClientInfo) GetDomain() string {
|
||||
return a.Domain
|
||||
}
|
||||
|
||||
func (a *CustomClientInfo) GetUserID() string {
|
||||
return a.UserID
|
||||
}
|
@ -3,7 +3,7 @@ package oauth
|
||||
import (
|
||||
"gopkg.in/oauth2.v3/errors"
|
||||
"gopkg.in/oauth2.v3/manage"
|
||||
"gopkg.in/oauth2.v3/models"
|
||||
//"gopkg.in/oauth2.v3/models"
|
||||
"gopkg.in/oauth2.v3/server"
|
||||
"gopkg.in/oauth2.v3/store"
|
||||
"log"
|
||||
@ -17,15 +17,19 @@ func InitOAuth() {
|
||||
// token store
|
||||
manager.MustTokenStorage(store.NewMemoryTokenStore())
|
||||
|
||||
clientStore := store.NewClientStore()
|
||||
// todo we need to check here if a password is enabled in db -- when yes set it here!
|
||||
clientStore.Set("openmediacenter", &models.Client{
|
||||
ID: "openmediacenter",
|
||||
Secret: "openmediacenter",
|
||||
Domain: "http://localhost:8081",
|
||||
})
|
||||
//clientStore := store.NewClientStore()
|
||||
//// todo we need to check here if a password is enabled in db -- when yes set it here!
|
||||
//clientStore.Set("openmediacenter", &models.Client{
|
||||
// ID: "openmediacenter",
|
||||
// Secret: "openmediacenter",
|
||||
// Domain: "http://localhost:8081",
|
||||
//})
|
||||
//
|
||||
//manager.MapClientStorage(clientStore)
|
||||
|
||||
strtest := NewCustomStore()
|
||||
manager.MapClientStorage(strtest)
|
||||
|
||||
manager.MapClientStorage(clientStore)
|
||||
srv = server.NewServer(server.NewConfig(), manager)
|
||||
srv.SetClientInfoHandler(server.ClientFormHandler)
|
||||
manager.SetRefreshTokenCfg(manage.DefaultRefreshTokenCfg)
|
||||
|
Reference in New Issue
Block a user