diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go index bfb1e69da8..cd43539122 100644 --- a/modules/middleware/repo.go +++ b/modules/middleware/repo.go @@ -99,6 +99,11 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler { return } + // Check if the mirror repository owner(mirror repository doesn't have access). + if !ctx.Repo.IsOwner && repo.OwnerId == ctx.User.Id { + ctx.Repo.IsOwner = true + } + // Check access. if repo.IsPrivate && !ctx.Repo.IsOwner { if ctx.User == nil { diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 89c7cb486e..fa4973ecd6 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -83,6 +83,9 @@ func SettingPost(ctx *middleware.Context, form auth.RepoSettingForm) { if len(ctx.Repo.Repository.Name) == 0 || ctx.Repo.Repository.Name != ctx.Query("repository") { ctx.RenderWithErr("Please make sure you entered repository name is correct.", "repo/setting", nil) return + } else if ctx.Repo.Repository.IsMirror { + ctx.Error(404) + return } newOwner := ctx.Query("owner") diff --git a/routers/user/home.go b/routers/user/home.go index b19f3ff4ac..a7a36b4bd7 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -235,8 +235,7 @@ func Issues(ctx *middleware.Context) { return } - err = issues[i].Repo.GetOwner() - if err != nil { + if err = issues[i].Repo.GetOwner(); err != nil { ctx.Handle(500, "user.Issues(GetOwner)", err) return } diff --git a/templates/repo/setting.tmpl b/templates/repo/setting.tmpl index f0f041dee8..99835640fc 100644 --- a/templates/repo/setting.tmpl +++ b/templates/repo/setting.tmpl @@ -88,6 +88,7 @@ Danger Zone + {{if not .Repository.IsMirror}}