Преглед на файлове

feat(command): make policy 命令

runningwater преди 5 месеца
родител
ревизия
d8ad850fc6
променени са 3 файла, в които са добавени 51 реда и са изтрити 2 реда
  1. 4 2
      app/cmd/make/make.go
  2. 30 0
      app/cmd/make/make_policy.go
  3. 17 0
      app/cmd/make/tpls/policy.tpl

+ 4 - 2
app/cmd/make/make.go

@@ -4,10 +4,11 @@ import (
 	"embed"
 	"fmt"
 
+	"github.com/spf13/cobra"
+
 	"github.com/runningwater/gohub/pkg/console"
 	"github.com/runningwater/gohub/pkg/file"
 	"github.com/runningwater/gohub/pkg/str"
-	"github.com/spf13/cobra"
 )
 
 // Model 参数解释
@@ -54,7 +55,7 @@ type Model struct {
 	PackageName        string
 }
 
-// tplsFS 方便我们后面打包的 .stub 为后缀的文件
+// tplsFS 方便我们后面打包的 .tpl 为后缀的文件
 //
 //go:embed tpls
 var tplsFS embed.FS
@@ -74,6 +75,7 @@ func init() {
 		CmdMakeMigration,
 		CmdMakeFactory,
 		CmdMakeSeeder,
+		CmdMakePolicy,
 	)
 }
 

+ 30 - 0
app/cmd/make/make_policy.go

@@ -0,0 +1,30 @@
+package make
+
+import (
+	"fmt"
+	"os"
+
+	"github.com/spf13/cobra"
+
+	"github.com/runningwater/gohub/pkg/console"
+)
+
+var CmdMakePolicy = &cobra.Command{
+	Use:   "policy",
+	Short: "Create policy file, example: make policy user",
+	Run:   runMakePolicy,
+	Args:  cobra.ExactArgs(1), // 只允许且必须传 1 个参数
+}
+
+func runMakePolicy(cmd *cobra.Command, args []string) {
+	model := makeModelFromString(args[0])
+
+	err := os.MkdirAll("app/policies", os.ModePerm)
+	if err != nil {
+		console.Error(err.Error())
+		return
+	}
+	filePath := fmt.Sprintf("app/policies/%s_policy.go", model.PackageName)
+
+	createFileFromTpl(filePath, "policy", model)
+}

+ 17 - 0
app/cmd/make/tpls/policy.tpl

@@ -0,0 +1,17 @@
+package policies
+
+import (
+    "github.com/runningwater/gohub/app/models/{{PackageName}}"
+    "github.com/runningwater/gohub/pkg/auth"
+
+    "github.com/gin-gonic/gin"
+)
+
+func CanModify{{StructName}}(c *gin.Context, {{VariableName}}Model {{PackageName}}.{{StructName}}) bool {
+    return auth.CurrentUID(c) == {{VariableName}}Model.UserID
+}
+
+// func CanView{{StructName}}(c *gin.Context, {{VariableName}}Model {{PackageName}}.{{StructName}}) bool {}
+// func CanCreate{{StructName}}(c *gin.Context, {{VariableName}}Model {{PackageName}}.{{StructName}}) bool {}
+// func CanUpdate{{StructName}}(c *gin.Context, {{VariableName}}Model {{PackageName}}.{{StructName}}) bool {}
+// func CanDelete{{StructName}}(c *gin.Context, {{VariableName}}Model {{PackageName}}.{{StructName}}) bool {}