mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 12:53:43 +01:00 
			
		
		
		
	Add migrate repo API
This commit is contained in:
		
							parent
							
								
									8829174574
								
							
						
					
					
						commit
						904bf1a50b
					
				@ -138,10 +138,15 @@ func runWeb(*cli.Context) {
 | 
				
			|||||||
			r.Post("/markdown/raw", v1.MarkdownRaw)
 | 
								r.Post("/markdown/raw", v1.MarkdownRaw)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// Users.
 | 
								// Users.
 | 
				
			||||||
			r.Get("/users/search", v1.SearchUsers)
 | 
								m.Group("/users", func(r *macaron.Router) {
 | 
				
			||||||
 | 
									r.Get("/search", v1.SearchUsers)
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// Repositories.
 | 
								// Repositories.
 | 
				
			||||||
			r.Get("/repos/search", v1.SearchRepos)
 | 
								m.Group("/repos", func(r *macaron.Router) {
 | 
				
			||||||
 | 
									r.Get("/search", v1.SearchRepos)
 | 
				
			||||||
 | 
									r.Post("/migrate", bindIgnErr(auth.MigrateRepoForm{}), v1.Migrate)
 | 
				
			||||||
 | 
								})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			r.Any("/*", func(ctx *middleware.Context) {
 | 
								r.Any("/*", func(ctx *middleware.Context) {
 | 
				
			||||||
				ctx.JSON(404, &base.ApiJsonErr{"Not Found", v1.DOC_URL})
 | 
									ctx.JSON(404, &base.ApiJsonErr{"Not Found", v1.DOC_URL})
 | 
				
			||||||
 | 
				
			|||||||
@ -61,42 +61,50 @@ func SearchRepos(ctx *middleware.Context) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Migrate(ctx *middleware.Context, form auth.MigrateRepoForm) {
 | 
					func Migrate(ctx *middleware.Context, form auth.MigrateRepoForm) {
 | 
				
			||||||
	ctxUser := ctx.User
 | 
						u, err := models.GetUserByName(ctx.Query("username"))
 | 
				
			||||||
	// Not equal means current user is an organization.
 | 
						if err != nil {
 | 
				
			||||||
	if form.Uid != ctx.User.Id {
 | 
					 | 
				
			||||||
		org, err := models.GetUserById(form.Uid)
 | 
					 | 
				
			||||||
		if err != nil && err != models.ErrUserNotExist {
 | 
					 | 
				
			||||||
		ctx.JSON(500, map[string]interface{}{
 | 
							ctx.JSON(500, map[string]interface{}{
 | 
				
			||||||
			"ok":    false,
 | 
								"ok":    false,
 | 
				
			||||||
				"data": err.Error(),
 | 
								"error": err.Error(),
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !u.ValidtePassword(ctx.Query("password")) {
 | 
				
			||||||
 | 
							ctx.JSON(500, map[string]interface{}{
 | 
				
			||||||
 | 
								"ok":    false,
 | 
				
			||||||
 | 
								"error": "username or password is not correct",
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ctxUser := u
 | 
				
			||||||
 | 
						// Not equal means current user is an organization.
 | 
				
			||||||
 | 
						if form.Uid != u.Id {
 | 
				
			||||||
 | 
							org, err := models.GetUserById(form.Uid)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								ctx.JSON(500, map[string]interface{}{
 | 
				
			||||||
 | 
									"ok":    false,
 | 
				
			||||||
 | 
									"error": err.Error(),
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		ctxUser = org
 | 
							ctxUser = org
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := ctx.User.GetOrganizations(); err != nil {
 | 
					 | 
				
			||||||
		ctx.JSON(500, map[string]interface{}{
 | 
					 | 
				
			||||||
			"ok":   false,
 | 
					 | 
				
			||||||
			"data": err.Error(),
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if ctx.HasError() {
 | 
						if ctx.HasError() {
 | 
				
			||||||
		ctx.JSON(500, map[string]interface{}{
 | 
							ctx.JSON(500, map[string]interface{}{
 | 
				
			||||||
			"ok":    false,
 | 
								"ok":    false,
 | 
				
			||||||
			"data": ctx.GetErrMsg(),
 | 
								"error": ctx.GetErrMsg(),
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ctxUser.IsOrganization() {
 | 
						if ctxUser.IsOrganization() {
 | 
				
			||||||
		// Check ownership of organization.
 | 
							// Check ownership of organization.
 | 
				
			||||||
		if !ctxUser.IsOrgOwner(ctx.User.Id) {
 | 
							if !ctxUser.IsOrgOwner(u.Id) {
 | 
				
			||||||
			ctx.JSON(403, map[string]interface{}{
 | 
								ctx.JSON(403, map[string]interface{}{
 | 
				
			||||||
				"ok":    false,
 | 
									"ok":    false,
 | 
				
			||||||
				"data": "Not allowed",
 | 
									"error": "given user is not owner of organization",
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -109,25 +117,11 @@ func Migrate(ctx *middleware.Context, form auth.MigrateRepoForm) {
 | 
				
			|||||||
		form.Mirror, url)
 | 
							form.Mirror, url)
 | 
				
			||||||
	if err == nil {
 | 
						if err == nil {
 | 
				
			||||||
		log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName)
 | 
							log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName)
 | 
				
			||||||
		ctx.JSON(200,
 | 
							ctx.JSON(200, map[string]interface{}{
 | 
				
			||||||
			map[string]interface{}{
 | 
					 | 
				
			||||||
			"ok":   true,
 | 
								"ok":   true,
 | 
				
			||||||
			"data": "/" + ctxUser.Name + "/" + form.RepoName,
 | 
								"data": "/" + ctxUser.Name + "/" + form.RepoName,
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	} else if err == models.ErrRepoAlreadyExist {
 | 
					 | 
				
			||||||
		ctx.JSON(500,
 | 
					 | 
				
			||||||
			map[string]interface{}{
 | 
					 | 
				
			||||||
				"ok":   false,
 | 
					 | 
				
			||||||
				"data": err.Error(),
 | 
					 | 
				
			||||||
			})
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	} else if err == models.ErrRepoNameIllegal {
 | 
					 | 
				
			||||||
		ctx.JSON(500, map[string]interface{}{
 | 
					 | 
				
			||||||
			"ok":   false,
 | 
					 | 
				
			||||||
			"data": err.Error(),
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if repo != nil {
 | 
						if repo != nil {
 | 
				
			||||||
@ -138,6 +132,6 @@ func Migrate(ctx *middleware.Context, form auth.MigrateRepoForm) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	ctx.JSON(500, map[string]interface{}{
 | 
						ctx.JSON(500, map[string]interface{}{
 | 
				
			||||||
		"ok":    false,
 | 
							"ok":    false,
 | 
				
			||||||
		"data": err.Error(),
 | 
							"error": err.Error(),
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -145,7 +145,7 @@ func MigratePost(ctx *middleware.Context, form auth.MigrateRepoForm) {
 | 
				
			|||||||
	// Not equal means current user is an organization.
 | 
						// Not equal means current user is an organization.
 | 
				
			||||||
	if form.Uid != ctx.User.Id {
 | 
						if form.Uid != ctx.User.Id {
 | 
				
			||||||
		org, err := models.GetUserById(form.Uid)
 | 
							org, err := models.GetUserById(form.Uid)
 | 
				
			||||||
		if err != nil && err != models.ErrUserNotExist {
 | 
							if err != nil {
 | 
				
			||||||
			ctx.Handle(500, "GetUserById", err)
 | 
								ctx.Handle(500, "GetUserById", err)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user