mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	add other session providers (#5963)
This commit is contained in:
		
							
								
								
									
										119
									
								
								vendor/github.com/couchbaselabs/go-couchbase/users.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								vendor/github.com/couchbaselabs/go-couchbase/users.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,119 @@
 | 
			
		||||
package couchbase
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type User struct {
 | 
			
		||||
	Name   string
 | 
			
		||||
	Id     string
 | 
			
		||||
	Domain string
 | 
			
		||||
	Roles  []Role
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Role struct {
 | 
			
		||||
	Role       string
 | 
			
		||||
	BucketName string `json:"bucket_name"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Sample:
 | 
			
		||||
// {"role":"admin","name":"Admin","desc":"Can manage ALL cluster features including security.","ce":true}
 | 
			
		||||
// {"role":"query_select","bucket_name":"*","name":"Query Select","desc":"Can execute SELECT statement on bucket to retrieve data"}
 | 
			
		||||
type RoleDescription struct {
 | 
			
		||||
	Role       string
 | 
			
		||||
	Name       string
 | 
			
		||||
	Desc       string
 | 
			
		||||
	Ce         bool
 | 
			
		||||
	BucketName string `json:"bucket_name"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Return user-role data, as parsed JSON.
 | 
			
		||||
// Sample:
 | 
			
		||||
//   [{"id":"ivanivanov","name":"Ivan Ivanov","roles":[{"role":"cluster_admin"},{"bucket_name":"default","role":"bucket_admin"}]},
 | 
			
		||||
//    {"id":"petrpetrov","name":"Petr Petrov","roles":[{"role":"replication_admin"}]}]
 | 
			
		||||
func (c *Client) GetUserRoles() ([]interface{}, error) {
 | 
			
		||||
	ret := make([]interface{}, 0, 1)
 | 
			
		||||
	err := c.parseURLResponse("/settings/rbac/users", &ret)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Get the configured administrator.
 | 
			
		||||
	// Expected result: {"port":8091,"username":"Administrator"}
 | 
			
		||||
	adminInfo := make(map[string]interface{}, 2)
 | 
			
		||||
	err = c.parseURLResponse("/settings/web", &adminInfo)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Create a special entry for the configured administrator.
 | 
			
		||||
	adminResult := map[string]interface{}{
 | 
			
		||||
		"name":   adminInfo["username"],
 | 
			
		||||
		"id":     adminInfo["username"],
 | 
			
		||||
		"domain": "ns_server",
 | 
			
		||||
		"roles": []interface{}{
 | 
			
		||||
			map[string]interface{}{
 | 
			
		||||
				"role": "admin",
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Add the configured administrator to the list of results.
 | 
			
		||||
	ret = append(ret, adminResult)
 | 
			
		||||
 | 
			
		||||
	return ret, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Client) GetUserInfoAll() ([]User, error) {
 | 
			
		||||
	ret := make([]User, 0, 16)
 | 
			
		||||
	err := c.parseURLResponse("/settings/rbac/users", &ret)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return ret, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func rolesToParamFormat(roles []Role) string {
 | 
			
		||||
	var buffer bytes.Buffer
 | 
			
		||||
	for i, role := range roles {
 | 
			
		||||
		if i > 0 {
 | 
			
		||||
			buffer.WriteString(",")
 | 
			
		||||
		}
 | 
			
		||||
		buffer.WriteString(role.Role)
 | 
			
		||||
		if role.BucketName != "" {
 | 
			
		||||
			buffer.WriteString("[")
 | 
			
		||||
			buffer.WriteString(role.BucketName)
 | 
			
		||||
			buffer.WriteString("]")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return buffer.String()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Client) PutUserInfo(u *User) error {
 | 
			
		||||
	params := map[string]interface{}{
 | 
			
		||||
		"name":  u.Name,
 | 
			
		||||
		"roles": rolesToParamFormat(u.Roles),
 | 
			
		||||
	}
 | 
			
		||||
	var target string
 | 
			
		||||
	switch u.Domain {
 | 
			
		||||
	case "external":
 | 
			
		||||
		target = "/settings/rbac/users/" + u.Id
 | 
			
		||||
	case "local":
 | 
			
		||||
		target = "/settings/rbac/users/local/" + u.Id
 | 
			
		||||
	default:
 | 
			
		||||
		return fmt.Errorf("Unknown user type: %s", u.Domain)
 | 
			
		||||
	}
 | 
			
		||||
	var ret string // PUT returns an empty string. We ignore it.
 | 
			
		||||
	err := c.parsePutURLResponse(target, params, &ret)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Client) GetRolesAll() ([]RoleDescription, error) {
 | 
			
		||||
	ret := make([]RoleDescription, 0, 32)
 | 
			
		||||
	err := c.parseURLResponse("/settings/rbac/roles", &ret)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return ret, nil
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user