mirror of https://github.com/go-gitea/gitea
Fix owner team access mode value in team_unit table (#23675)
All `access_mode` value of Owner Teams are 0(AccessModeNone) in `team_unit` table, which should be 4(AccessModeOwner) In `team` table: ![image](https://user-images.githubusercontent.com/18380374/227409457-1b9660ae-8cf7-49c8-a013-1850b46baebc.png) In `team_unit` table: ![image](https://user-images.githubusercontent.com/18380374/227409429-a793dd90-4ae1-4191-b95b-e288c591f9fd.png) ps: In https://github.com/go-gitea/gitea/pull/23630, `access_mode` in `team_unit` is used to check the team unit permission, but I found that user can not see issues in owned org repos.pull/23800/head^2
parent
29133f3d04
commit
6eb856c614
@ -0,0 +1,47 @@ |
|||||||
|
// Copyright 2023 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package v1_20 //nolint
|
||||||
|
|
||||||
|
import ( |
||||||
|
"code.gitea.io/gitea/modules/log" |
||||||
|
|
||||||
|
"xorm.io/xorm" |
||||||
|
) |
||||||
|
|
||||||
|
func FixIncorrectOwnerTeamUnitAccessMode(x *xorm.Engine) error { |
||||||
|
type UnitType int |
||||||
|
type AccessMode int |
||||||
|
|
||||||
|
type TeamUnit struct { |
||||||
|
ID int64 `xorm:"pk autoincr"` |
||||||
|
OrgID int64 `xorm:"INDEX"` |
||||||
|
TeamID int64 `xorm:"UNIQUE(s)"` |
||||||
|
Type UnitType `xorm:"UNIQUE(s)"` |
||||||
|
AccessMode AccessMode |
||||||
|
} |
||||||
|
|
||||||
|
const ( |
||||||
|
// AccessModeOwner owner access
|
||||||
|
AccessModeOwner = 4 |
||||||
|
) |
||||||
|
|
||||||
|
sess := x.NewSession() |
||||||
|
defer sess.Close() |
||||||
|
|
||||||
|
if err := sess.Begin(); err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
|
||||||
|
count, err := sess.Table("team_unit"). |
||||||
|
Where("team_id IN (SELECT id FROM team WHERE authorize = ?)", AccessModeOwner). |
||||||
|
Update(&TeamUnit{ |
||||||
|
AccessMode: AccessModeOwner, |
||||||
|
}) |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
log.Debug("Updated %d owner team unit access mode to belong to owner instead of none", count) |
||||||
|
|
||||||
|
return sess.Commit() |
||||||
|
} |
Loading…
Reference in new issue