mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-27 10:44:29 -04:00 
			
		
		
		
	- [x] Move `CreateRepositoryByExample` to service layer - [x] Move `AddCollabrator` to service layer - [x] Add a new parameter for `AddCollabrator` so that changing mode immediately after that will become unnecessary.
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2019 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package perm
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"slices"
 | |
| 
 | |
| 	"code.gitea.io/gitea/modules/util"
 | |
| )
 | |
| 
 | |
| // AccessMode specifies the users access mode
 | |
| type AccessMode int
 | |
| 
 | |
| const (
 | |
| 	AccessModeNone AccessMode = iota // 0: no access
 | |
| 
 | |
| 	AccessModeRead  // 1: read access
 | |
| 	AccessModeWrite // 2: write access
 | |
| 	AccessModeAdmin // 3: admin access
 | |
| 	AccessModeOwner // 4: owner access
 | |
| )
 | |
| 
 | |
| // ToString returns the string representation of the access mode, do not make it a Stringer, otherwise it's difficult to render in templates
 | |
| func (mode AccessMode) ToString() string {
 | |
| 	switch mode {
 | |
| 	case AccessModeRead:
 | |
| 		return "read"
 | |
| 	case AccessModeWrite:
 | |
| 		return "write"
 | |
| 	case AccessModeAdmin:
 | |
| 		return "admin"
 | |
| 	case AccessModeOwner:
 | |
| 		return "owner"
 | |
| 	default:
 | |
| 		return "none"
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (mode AccessMode) LogString() string {
 | |
| 	return fmt.Sprintf("<AccessMode:%d:%s>", mode, mode.ToString())
 | |
| }
 | |
| 
 | |
| // ParseAccessMode returns corresponding access mode to given permission string.
 | |
| func ParseAccessMode(permission string, allowed ...AccessMode) AccessMode {
 | |
| 	m := AccessModeNone
 | |
| 	switch permission {
 | |
| 	case "read":
 | |
| 		m = AccessModeRead
 | |
| 	case "write":
 | |
| 		m = AccessModeWrite
 | |
| 	case "admin":
 | |
| 		m = AccessModeAdmin
 | |
| 	default:
 | |
| 		// the "owner" access is not really used for user input, it's mainly for checking access level in code, so don't parse it
 | |
| 	}
 | |
| 	if len(allowed) == 0 {
 | |
| 		return m
 | |
| 	}
 | |
| 	return util.Iif(slices.Contains(allowed, m), m, AccessModeNone)
 | |
| }
 | |
| 
 | |
| // ErrInvalidAccessMode is returned when an invalid access mode is used
 | |
| var ErrInvalidAccessMode = util.NewInvalidArgumentErrorf("Invalid access mode")
 |