diff options
| author | 2024-04-13 13:25:10 +0200 | |
|---|---|---|
| committer | 2024-04-13 13:25:10 +0200 | |
| commit | 89e0cfd8741b6763ca04e90558bccf4c3c380cfa (patch) | |
| tree | 5858ada73473816fa1982f12717b66996d163f9d /internal/api/util | |
| parent | [performance] update GetAccountsByIDs() to use the new multi cache loader end... (diff) | |
| download | gotosocial-89e0cfd8741b6763ca04e90558bccf4c3c380cfa.tar.xz | |
[feature] Admin accounts endpoints; approve/reject sign-ups (#2826)
* update settings panels, add pending overview + approve/deny functions
* add admin accounts get, approve, reject
* send approved/rejected emails
* use signup URL
* docs!
* email
* swagger
* web linting
* fix email tests
* wee lil fixerinos
* use new paging logic for GetAccounts() series of admin endpoints, small changes to query building
* shuffle useAccountIDIn check *before* adding to query
* fix parse from toot react error
* use `netip.Addr`
* put valid slices in globals
* optimistic updates for account state
---------
Co-authored-by: kim <grufwub@gmail.com>
Diffstat (limited to 'internal/api/util')
| -rw-r--r-- | internal/api/util/parsequery.go | 98 | 
1 files changed, 81 insertions, 17 deletions
diff --git a/internal/api/util/parsequery.go b/internal/api/util/parsequery.go index da6320b67..54cb4c466 100644 --- a/internal/api/util/parsequery.go +++ b/internal/api/util/parsequery.go @@ -34,12 +34,13 @@ const (  	/* Common keys */ -	IDKey      = "id" -	LimitKey   = "limit" -	LocalKey   = "local" -	MaxIDKey   = "max_id" -	SinceIDKey = "since_id" -	MinIDKey   = "min_id" +	IDKey       = "id" +	LimitKey    = "limit" +	LocalKey    = "local" +	MaxIDKey    = "max_id" +	SinceIDKey  = "since_id" +	MinIDKey    = "min_id" +	UsernameKey = "username"  	/* AP endpoint keys */ @@ -61,33 +62,55 @@ const (  	/* Web endpoint keys */ -	WebUsernameKey = "username"  	WebStatusIDKey = "status"  	/* Domain permission keys */  	DomainPermissionExportKey = "export"  	DomainPermissionImportKey = "import" + +	/* Admin query keys */ + +	AdminRemoteKey      = "remote" +	AdminActiveKey      = "active" +	AdminPendingKey     = "pending" +	AdminDisabledKey    = "disabled" +	AdminSilencedKey    = "silenced" +	AdminSuspendedKey   = "suspended" +	AdminSensitizedKey  = "sensitized" +	AdminDisplayNameKey = "display_name" +	AdminByDomainKey    = "by_domain" +	AdminEmailKey       = "email" +	AdminIPKey          = "ip" +	AdminStaffKey       = "staff" +	AdminOriginKey      = "origin" +	AdminStatusKey      = "status" +	AdminPermissionsKey = "permissions" +	AdminRoleIDsKey     = "role_ids[]" +	AdminInvitedByKey   = "invited_by"  )  /*  	Parse functions for *OPTIONAL* parameters with default values.  */ -func ParseLimit(value string, defaultValue int, max, min int) (int, gtserror.WithCode) { -	i, err := parseInt(value, defaultValue, max, min, LimitKey) -	if err != nil { -		return 0, err +func ParseMaxID(value string, defaultValue string) string { +	if value == "" { +		return defaultValue  	} -	return i, nil +	return value  } -func ParseLocal(value string, defaultValue bool) (bool, gtserror.WithCode) { -	return parseBool(value, defaultValue, LocalKey) +func ParseSinceID(value string, defaultValue string) string { +	if value == "" { +		return defaultValue +	} + +	return value  } -func ParseMaxID(value string, defaultValue string) string { +func ParseMinID(value string, defaultValue string) string {  	if value == "" {  		return defaultValue  	} @@ -95,6 +118,19 @@ func ParseMaxID(value string, defaultValue string) string {  	return value  } +func ParseLimit(value string, defaultValue int, max, min int) (int, gtserror.WithCode) { +	i, err := parseInt(value, defaultValue, max, min, LimitKey) +	if err != nil { +		return 0, err +	} + +	return i, nil +} + +func ParseLocal(value string, defaultValue bool) (bool, gtserror.WithCode) { +	return parseBool(value, defaultValue, LocalKey) +} +  func ParseSearchExcludeUnreviewed(value string, defaultValue bool) (bool, gtserror.WithCode) {  	return parseBool(value, defaultValue, SearchExcludeUnreviewedKey)  } @@ -123,6 +159,34 @@ func ParseOnlyOtherAccounts(value string, defaultValue bool) (bool, gtserror.Wit  	return parseBool(value, defaultValue, OnlyOtherAccountsKey)  } +func ParseAdminRemote(value string, defaultValue bool) (bool, gtserror.WithCode) { +	return parseBool(value, defaultValue, AdminRemoteKey) +} + +func ParseAdminActive(value string, defaultValue bool) (bool, gtserror.WithCode) { +	return parseBool(value, defaultValue, AdminActiveKey) +} + +func ParseAdminPending(value string, defaultValue bool) (bool, gtserror.WithCode) { +	return parseBool(value, defaultValue, AdminPendingKey) +} + +func ParseAdminDisabled(value string, defaultValue bool) (bool, gtserror.WithCode) { +	return parseBool(value, defaultValue, AdminDisabledKey) +} + +func ParseAdminSilenced(value string, defaultValue bool) (bool, gtserror.WithCode) { +	return parseBool(value, defaultValue, AdminSilencedKey) +} + +func ParseAdminSuspended(value string, defaultValue bool) (bool, gtserror.WithCode) { +	return parseBool(value, defaultValue, AdminSuspendedKey) +} + +func ParseAdminStaff(value string, defaultValue bool) (bool, gtserror.WithCode) { +	return parseBool(value, defaultValue, AdminStaffKey) +} +  /*  	Parse functions for *REQUIRED* parameters.  */ @@ -187,8 +251,8 @@ func ParseTagName(value string) (string, gtserror.WithCode) {  	return value, nil  } -func ParseWebUsername(value string) (string, gtserror.WithCode) { -	key := WebUsernameKey +func ParseUsername(value string) (string, gtserror.WithCode) { +	key := UsernameKey  	if value == "" {  		return "", requiredError(key)  | 
