@@ -78,8 +78,8 @@ type Repository struct {
7878}
7979
8080// CanEnableEditor returns true if repository is editable and user has proper access level.
81- func (r * Repository ) CanEnableEditor () bool {
82- return r .Permission .CanWrite ( unit_model . TypeCode ) && r .Repository .CanEnableEditor () && r . IsViewBranch && ! r .Repository .IsArchived
81+ func (r * Repository ) CanEnableEditor (user * user_model. User ) bool {
82+ return r .IsViewBranch && r . Permission .CanWriteToBranch ( user , r . BranchName ) && r .Repository .CanEnableEditor () && ! r .Repository .IsArchived
8383}
8484
8585// CanCreateBranch returns true if repository is editable and user has proper access level.
@@ -123,7 +123,7 @@ func (r *Repository) CanCommitToBranch(ctx context.Context, doer *user_model.Use
123123
124124 sign , keyID , _ , err := asymkey_service .SignCRUDAction (ctx , r .Repository .RepoPath (), doer , r .Repository .RepoPath (), git .BranchPrefix + r .BranchName )
125125
126- canCommit := r .CanEnableEditor () && userCanPush
126+ canCommit := r .CanEnableEditor (doer ) && userCanPush
127127 if requireSigned {
128128 canCommit = canCommit && sign
129129 }
@@ -139,7 +139,7 @@ func (r *Repository) CanCommitToBranch(ctx context.Context, doer *user_model.Use
139139
140140 return CanCommitToBranchResults {
141141 CanCommitToBranch : canCommit ,
142- EditorEnabled : r .CanEnableEditor (),
142+ EditorEnabled : r .CanEnableEditor (doer ),
143143 UserCanPush : userCanPush ,
144144 RequireSigned : requireSigned ,
145145 WillSign : sign ,
0 commit comments