mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 02:04:11 +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)
 | 
			
		||||
 | 
			
		||||
			// Users.
 | 
			
		||||
			r.Get("/users/search", v1.SearchUsers)
 | 
			
		||||
			m.Group("/users", func(r *macaron.Router) {
 | 
			
		||||
				r.Get("/search", v1.SearchUsers)
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
			// 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) {
 | 
			
		||||
				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) {
 | 
			
		||||
	ctxUser := ctx.User
 | 
			
		||||
	// Not equal means current user is an organization.
 | 
			
		||||
	if form.Uid != ctx.User.Id {
 | 
			
		||||
		org, err := models.GetUserById(form.Uid)
 | 
			
		||||
		if err != nil && err != models.ErrUserNotExist {
 | 
			
		||||
	u, err := models.GetUserByName(ctx.Query("username"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		ctx.JSON(500, map[string]interface{}{
 | 
			
		||||
			"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
 | 
			
		||||
		}
 | 
			
		||||
		ctxUser = org
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := ctx.User.GetOrganizations(); err != nil {
 | 
			
		||||
		ctx.JSON(500, map[string]interface{}{
 | 
			
		||||
			"ok":   false,
 | 
			
		||||
			"data": err.Error(),
 | 
			
		||||
		})
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ctx.HasError() {
 | 
			
		||||
		ctx.JSON(500, map[string]interface{}{
 | 
			
		||||
			"ok":    false,
 | 
			
		||||
			"data": ctx.GetErrMsg(),
 | 
			
		||||
			"error": ctx.GetErrMsg(),
 | 
			
		||||
		})
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ctxUser.IsOrganization() {
 | 
			
		||||
		// Check ownership of organization.
 | 
			
		||||
		if !ctxUser.IsOrgOwner(ctx.User.Id) {
 | 
			
		||||
		if !ctxUser.IsOrgOwner(u.Id) {
 | 
			
		||||
			ctx.JSON(403, map[string]interface{}{
 | 
			
		||||
				"ok":    false,
 | 
			
		||||
				"data": "Not allowed",
 | 
			
		||||
				"error": "given user is not owner of organization",
 | 
			
		||||
			})
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
@ -109,25 +117,11 @@ func Migrate(ctx *middleware.Context, form auth.MigrateRepoForm) {
 | 
			
		||||
		form.Mirror, url)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName)
 | 
			
		||||
		ctx.JSON(200,
 | 
			
		||||
			map[string]interface{}{
 | 
			
		||||
		ctx.JSON(200, map[string]interface{}{
 | 
			
		||||
			"ok":   true,
 | 
			
		||||
			"data": "/" + ctxUser.Name + "/" + form.RepoName,
 | 
			
		||||
		})
 | 
			
		||||
		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 {
 | 
			
		||||
@ -138,6 +132,6 @@ func Migrate(ctx *middleware.Context, form auth.MigrateRepoForm) {
 | 
			
		||||
 | 
			
		||||
	ctx.JSON(500, map[string]interface{}{
 | 
			
		||||
		"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.
 | 
			
		||||
	if form.Uid != ctx.User.Id {
 | 
			
		||||
		org, err := models.GetUserById(form.Uid)
 | 
			
		||||
		if err != nil && err != models.ErrUserNotExist {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			ctx.Handle(500, "GetUserById", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user