Toolbox/goDataverse/user/user.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))
}
*/