Version zu Ende April 2023
This commit is contained in:
134
goDataverse/user/user.go
Normal file
134
goDataverse/user/user.go
Normal file
@@ -0,0 +1,134 @@
|
||||
/**
|
||||
= 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))
|
||||
}
|
||||
*/
|
||||
Reference in New Issue
Block a user