e64f6f8569
enforces user admin role requirement for - creating / deleting / setting role for organization users - creating / deleting / setting role for project users - updating project name - deleting project hides action elements based on role for - admin console - team settings if team is only visible through project membership - add project tile if not team admin - project name text editor if not team / project admin - add redirect from team page if settings only visible through project membership - add redirect from admin console if not org admin role enforcement is handled on the api side through a custom GraphQL directive `hasRole`. on the client side, role information is fetched in the TopNavbar's `me` query and stored in the `UserContext`. there is a custom hook, `useCurrentUser`, that provides a user object with two functions, `isVisibile` & `isAdmin` which is used to check roles in order to render/hide relevant UI elements.
41 lines
752 B
Go
41 lines
752 B
Go
package commands
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
const TaskcafeConfDirEnvName = "TASKCAFE_CONFIG_DIR"
|
|
|
|
const TaskcafeAppConf = "taskcafe"
|
|
|
|
const mainDescription = `Taskcafé is an open soure project management
|
|
system written in Golang & React.`
|
|
|
|
var (
|
|
version = "dev"
|
|
commit = "none"
|
|
date = "unknown"
|
|
)
|
|
|
|
var versionTemplate = fmt.Sprintf(`Version: %s
|
|
Commit: %s
|
|
Built: %s`, version, commit, date+"\n")
|
|
|
|
var commandError error
|
|
var configDir string
|
|
var verbose bool
|
|
var noColor bool
|
|
|
|
var rootCmd = &cobra.Command{
|
|
Use: "taskcafe",
|
|
Long: mainDescription,
|
|
Version: version,
|
|
}
|
|
|
|
func Execute() {
|
|
rootCmd.SetVersionTemplate(versionTemplate)
|
|
rootCmd.AddCommand(newWebCmd(), newMigrateCmd(), newTokenCmd())
|
|
rootCmd.Execute()
|
|
}
|