 689fb82a70
			
		
	
	
	
	
	689fb82a70This adds an endpoint (`/orgs/{org}/rename`) to rename organizations.
I've modeled the endpoint using the rename user endpoint --
`/admin/users/{username}/rename` -- as base.
It is the 1st time I wrote a new API endpoint (I've tried to follow the
rename users endpoint code while writing it). So feel free to ping me if
there is something wrong or missing.
Resolves #32995
---------
Signed-off-by: Bruno Sofiato <bruno.sofiato@gmail.com>
Co-authored-by: delvh <dev.lh@web.de>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 040c830dec5c727a56d16df62b1673bce6fca645)
Conflicts:
	routers/api/v1/admin/user.go
  ignore this unrelated change
	templates/swagger/v1_json.tmpl
  regenerate
	tests/integration/api_org_test.go
  port as a standalone test instead of refactoring the tests
		
	
			
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2015 The Gogs Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package structs
 | |
| 
 | |
| // Organization represents an organization
 | |
| type Organization struct {
 | |
| 	ID                        int64  `json:"id"`
 | |
| 	Name                      string `json:"name"`
 | |
| 	FullName                  string `json:"full_name"`
 | |
| 	Email                     string `json:"email"`
 | |
| 	AvatarURL                 string `json:"avatar_url"`
 | |
| 	Description               string `json:"description"`
 | |
| 	Website                   string `json:"website"`
 | |
| 	Location                  string `json:"location"`
 | |
| 	Visibility                string `json:"visibility"`
 | |
| 	RepoAdminChangeTeamAccess bool   `json:"repo_admin_change_team_access"`
 | |
| 	// deprecated
 | |
| 	UserName string `json:"username"`
 | |
| }
 | |
| 
 | |
| // OrganizationPermissions list different users permissions on an organization
 | |
| type OrganizationPermissions struct {
 | |
| 	IsOwner             bool `json:"is_owner"`
 | |
| 	IsAdmin             bool `json:"is_admin"`
 | |
| 	CanWrite            bool `json:"can_write"`
 | |
| 	CanRead             bool `json:"can_read"`
 | |
| 	CanCreateRepository bool `json:"can_create_repository"`
 | |
| }
 | |
| 
 | |
| // CreateOrgOption options for creating an organization
 | |
| type CreateOrgOption struct {
 | |
| 	// required: true
 | |
| 	UserName    string `json:"username" binding:"Required;Username;MaxSize(40)"`
 | |
| 	FullName    string `json:"full_name" binding:"MaxSize(100)"`
 | |
| 	Email       string `json:"email" binding:"MaxSize(255)"`
 | |
| 	Description string `json:"description" binding:"MaxSize(255)"`
 | |
| 	Website     string `json:"website" binding:"ValidUrl;MaxSize(255)"`
 | |
| 	Location    string `json:"location" binding:"MaxSize(50)"`
 | |
| 	// possible values are `public` (default), `limited` or `private`
 | |
| 	// enum: ["public", "limited", "private"]
 | |
| 	Visibility                string `json:"visibility" binding:"In(,public,limited,private)"`
 | |
| 	RepoAdminChangeTeamAccess bool   `json:"repo_admin_change_team_access"`
 | |
| }
 | |
| 
 | |
| // TODO: make EditOrgOption fields optional after https://gitea.com/go-chi/binding/pulls/5 got merged
 | |
| 
 | |
| // EditOrgOption options for editing an organization
 | |
| type EditOrgOption struct {
 | |
| 	FullName    string  `json:"full_name" binding:"MaxSize(100)"`
 | |
| 	Email       *string `json:"email" binding:"MaxSize(255)"`
 | |
| 	Description string  `json:"description" binding:"MaxSize(255)"`
 | |
| 	Website     string  `json:"website" binding:"ValidUrl;MaxSize(255)"`
 | |
| 	Location    string  `json:"location" binding:"MaxSize(50)"`
 | |
| 	// possible values are `public`, `limited` or `private`
 | |
| 	// enum: ["public", "limited", "private"]
 | |
| 	Visibility                string `json:"visibility" binding:"In(,public,limited,private)"`
 | |
| 	RepoAdminChangeTeamAccess *bool  `json:"repo_admin_change_team_access"`
 | |
| }
 | |
| 
 | |
| // RenameOrgOption options when renaming an organization
 | |
| type RenameOrgOption struct {
 | |
| 	// New username for this org. This name cannot be in use yet by any other user.
 | |
| 	//
 | |
| 	// required: true
 | |
| 	// unique: true
 | |
| 	NewName string `json:"new_name" binding:"Required"`
 | |
| }
 |