135 lines
4.0 KiB
Go
135 lines
4.0 KiB
Go
/**
|
|
= Creative Commons Lizenzvertrag =
|
|
Diese Software ist von der archium GmbH, Gera ist lizenziert unter einer Creative Commons Namensnennung - Nicht kommerziell - Keine Bearbeitungen 4.0 International Lizenz. (http://creativecommons.org/licenses/by-nc-nd/4.0/deed.de)
|
|
Individuelle über diese Lizenz hinausgehende Berechtigungen können Sie unter https://archium.org erhalten.
|
|
|
|
= Creative Commons License =
|
|
Software by archium GmbH, Gera is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. (http://creativecommons.org/licenses/by-nc-nd/4.0/)
|
|
Individual permissions beyond the scope of this license may be available at https://archium.org.
|
|
**/
|
|
|
|
package user
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
|
|
// "log"
|
|
// "reflect"
|
|
|
|
"Toolbox/goDataverse/connect"
|
|
tol "Toolbox/goDataverse/tools"
|
|
|
|
gjs "github.com/tidwall/gjson"
|
|
// "log"
|
|
)
|
|
|
|
func ListUsers(_serverurl, _apitoken string, _sorted bool) (string, error) {
|
|
response, err := connect.GetRequest(_serverurl+"/api/admin/list-users"+
|
|
func(s bool) string {
|
|
if s {
|
|
return "?sortKey=createdtime"
|
|
} else {
|
|
return ""
|
|
}
|
|
}(_sorted), tol.ColMap{}, tol.ColMap{"X-Dataverse-key": _apitoken})
|
|
//
|
|
return (fmt.Sprintf("%s", response)), err
|
|
}
|
|
|
|
func ListUser(_serverurl, _apitoken, _id string) (string, error) {
|
|
response, err := connect.GetRequest(_serverurl+"/api/admin/authenticatedUsers/"+_id,
|
|
tol.ColMap{}, tol.ColMap{"X-Dataverse-key": _apitoken})
|
|
//
|
|
return (fmt.Sprintf("%s", response)), err
|
|
}
|
|
|
|
func IsValidUser(_serverurl, _apitoken string) (bool, bool, string, error) {
|
|
var ident string = ""
|
|
var super bool = false
|
|
var valid bool = false
|
|
//
|
|
response, err := connect.GetRequest(_serverurl+"/api/users/:me",
|
|
tol.ColMap{}, tol.ColMap{"X-Dataverse-key": _apitoken})
|
|
//
|
|
message := tol.GetObjectFromStr("")
|
|
me := fmt.Sprintf("%v", string(response))
|
|
status := gjs.Get(me, "status")
|
|
if status.String() == "OK" {
|
|
data := gjs.Get(me, "data")
|
|
if data.IsObject() {
|
|
ident = strings.ReplaceAll(gjs.Get(data.String(), "identifier").String(), "@", "")
|
|
super = gjs.Get(data.String(), "superuser").Bool()
|
|
valid = true
|
|
}
|
|
} else {
|
|
if status.String() == "ERROR" {
|
|
message = gjs.Get(me, "message")
|
|
err = errors.New(message.String())
|
|
}
|
|
}
|
|
// log.Println("IsValidUser:", message.String(), valid, super, ident, me)
|
|
//
|
|
return valid, super, ident, err
|
|
}
|
|
|
|
func IsSuperUser(_serverurl, _apitoken string) (bool, error) {
|
|
var super bool = false
|
|
//
|
|
response, err := connect.GetRequest(_serverurl+"/api/users/:me",
|
|
tol.ColMap{}, tol.ColMap{"X-Dataverse-key": _apitoken})
|
|
//
|
|
me := fmt.Sprintf("%s", response)
|
|
status := gjs.Get(me, "status")
|
|
if status.String() == "OK" {
|
|
data := gjs.Get(me, "data")
|
|
if data.IsObject() {
|
|
super = gjs.Get("superuser", data.String()).Bool()
|
|
}
|
|
} else {
|
|
if status.String() == "ERROR" {
|
|
message := gjs.Get(me, "message")
|
|
err = errors.New(message.String())
|
|
}
|
|
}
|
|
//
|
|
return super, err
|
|
}
|
|
|
|
func ToggleSuperUser(_serverurl, _apitoken, _id string) (string, error) {
|
|
response, err := connect.PostRequest(_serverurl+"/api/admin/superuser/"+_id+"",
|
|
tol.ColMap{}, tol.ColMap{"X-Dataverse-key": _apitoken})
|
|
//
|
|
return (fmt.Sprintf("%s", response)), err
|
|
}
|
|
|
|
func SearchData(_serverurl, _apitoken string, _sorted bool) (string, error) {
|
|
response, err := connect.GetRequest(_serverurl+"/api/search?q=*"+
|
|
func(s bool) string {
|
|
if s {
|
|
return "?sortKey=createdtime"
|
|
} else {
|
|
return ""
|
|
}
|
|
}(_sorted), tol.ColMap{}, tol.ColMap{"X-Dataverse-key": _apitoken})
|
|
//
|
|
return (fmt.Sprintf("%s", response)), err
|
|
//
|
|
// curl -H "X-Dataverse-key:$API_TOKEN" $SERVER_URL/api/admin/list-users
|
|
// # sort it by createdtime (the creation time of the account)
|
|
// # curl -H "X-Dataverse-key:$API_TOKEN" "$SERVER_URL/api/admin/list-users?sortKey=createdtime"
|
|
}
|
|
|
|
/*
|
|
func CreateAuthenticatedUser(server_url, api_token, params string) string {
|
|
response, err := connect.PostRequestB(server_url+"/api/admin/authenticatedUsers", []byte(params), tol.ColMap{"X-Dataverse-key": api_token})
|
|
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
return (fmt.Sprintf("%s", response))
|
|
}
|
|
*/
|