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)
|
||||
|
49
apiGo/database/settings/DBSettings.go
Normal file
49
apiGo/database/settings/DBSettings.go
Normal file
@ -0,0 +1,49 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"openmediacenter/apiGo/database"
|
||||
)
|
||||
|
||||
func GetPassword() *string {
|
||||
pwd := LoadSettings().Pasword
|
||||
if pwd == "-1" {
|
||||
return nil
|
||||
} else {
|
||||
return &pwd
|
||||
}
|
||||
}
|
||||
|
||||
type SettingsType struct {
|
||||
DarkMode bool
|
||||
Pasword string
|
||||
Mediacenter_name string
|
||||
VideoPath string
|
||||
}
|
||||
|
||||
func LoadSettings() *SettingsType {
|
||||
query := "SELECT DarkMode, password, mediacenter_name, video_path from settings"
|
||||
|
||||
type RawSettingsType struct {
|
||||
DarkMode int
|
||||
Pasword string
|
||||
Mediacenter_name string
|
||||
VideoPath string
|
||||
}
|
||||
|
||||
result := RawSettingsType{}
|
||||
|
||||
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())
|
||||
}
|
||||
|
||||
res := SettingsType{
|
||||
DarkMode: result.DarkMode != 0,
|
||||
Pasword: result.Pasword,
|
||||
Mediacenter_name: result.Mediacenter_name,
|
||||
VideoPath: result.VideoPath,
|
||||
}
|
||||
|
||||
return &res
|
||||
}
|
@ -3,7 +3,6 @@ module openmediacenter/apiGo
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
github.com/go-session/session v3.1.2+incompatible
|
||||
github.com/go-sql-driver/mysql v1.5.0
|
||||
gopkg.in/oauth2.v3 v3.12.0
|
||||
)
|
||||
|
@ -11,7 +11,6 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/gavv/httpexpect v2.0.0+incompatible h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU5kORdjhlA1yX8=
|
||||
github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
|
||||
github.com/go-session/session v3.1.2+incompatible h1:yStchEObKg4nk2F7JGE7KoFIrA/1Y078peagMWcrncg=
|
||||
github.com/go-session/session v3.1.2+incompatible/go.mod h1:8B3iivBQjrz/JtC68Np2T1yBBLxTan3mn/3OM0CyRt0=
|
||||
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
|
||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
|
@ -26,6 +26,7 @@ func main() {
|
||||
api.AddSettingsHandlers()
|
||||
api.AddTagHandlers()
|
||||
api.AddActorsHandlers()
|
||||
api.AddInitHandlers()
|
||||
|
||||
api.ServerInit(8081)
|
||||
}
|
||||
|
Reference in New Issue
Block a user