mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 17:12:25 -05:00 
			
		
		
		
	
		
			
	
	
		
			53 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|  | package admin | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"context" | ||
|  | 	"fmt" | ||
|  | 
 | ||
|  | 	"github.com/superseriousbusiness/gotosocial/internal/ap" | ||
|  | 	apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" | ||
|  | 	"github.com/superseriousbusiness/gotosocial/internal/gtserror" | ||
|  | 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" | ||
|  | 	"github.com/superseriousbusiness/gotosocial/internal/id" | ||
|  | 	"github.com/superseriousbusiness/gotosocial/internal/messages" | ||
|  | ) | ||
|  | 
 | ||
|  | func (p *processor) AccountAction(ctx context.Context, account *gtsmodel.Account, form *apimodel.AdminAccountActionRequest) gtserror.WithCode { | ||
|  | 	targetAccount, err := p.db.GetAccountByID(ctx, form.TargetAccountID) | ||
|  | 	if err != nil { | ||
|  | 		return gtserror.NewErrorInternalError(err) | ||
|  | 	} | ||
|  | 
 | ||
|  | 	adminActionID, err := id.NewULID() | ||
|  | 	if err != nil { | ||
|  | 		return gtserror.NewErrorInternalError(err) | ||
|  | 	} | ||
|  | 
 | ||
|  | 	adminAction := >smodel.AdminAccountAction{ | ||
|  | 		ID:              adminActionID, | ||
|  | 		AccountID:       account.ID, | ||
|  | 		TargetAccountID: targetAccount.ID, | ||
|  | 		Text:            form.Text, | ||
|  | 	} | ||
|  | 
 | ||
|  | 	switch form.Type { | ||
|  | 	case string(gtsmodel.AdminActionSuspend): | ||
|  | 		adminAction.Type = gtsmodel.AdminActionSuspend | ||
|  | 		// pass the account delete through the client api channel for processing | ||
|  | 		p.fromClientAPI <- messages.FromClientAPI{ | ||
|  | 			APObjectType:   ap.ActorPerson, | ||
|  | 			APActivityType: ap.ActivityDelete, | ||
|  | 			OriginAccount:  account, | ||
|  | 			TargetAccount:  targetAccount, | ||
|  | 		} | ||
|  | 	default: | ||
|  | 		return gtserror.NewErrorBadRequest(fmt.Errorf("admin action type %s is not supported for this endpoint", form.Type)) | ||
|  | 	} | ||
|  | 
 | ||
|  | 	if err := p.db.Put(ctx, adminAction); err != nil { | ||
|  | 		return gtserror.NewErrorInternalError(err) | ||
|  | 	} | ||
|  | 
 | ||
|  | 	return nil | ||
|  | } |