-
Notifications
You must be signed in to change notification settings - Fork 0
/
install.go
128 lines (114 loc) · 2.88 KB
/
install.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// SPDX-License-Identifier: MIT
package admin
import (
"github.com/issue9/orm/v5"
"github.com/issue9/web"
"github.com/issue9/cmfx"
"github.com/issue9/cmfx/pkg/passport"
"github.com/issue9/cmfx/pkg/rbac"
"github.com/issue9/cmfx/pkg/securitylog"
"github.com/issue9/cmfx/pkg/setting"
"github.com/issue9/cmfx/pkg/token"
)
func Install(mod string, db *orm.DB) {
e := orm.Prefix(mod).DB(db)
setting.Install(mod, db)
token.Install(mod, db)
securitylog.Install(mod, db)
passport.Install(mod, db)
rbac.Install(mod, db)
cmfx.Init(nil, func() error {
return web.StackError(e.Create(&modelAdmin{}))
}, func() error {
a, err := rbac.New(mod, db, nil)
if err != nil {
return web.StackError(err)
}
cmfx.Init(nil, func() error {
_, err := a.NewRole(0, "管理员", "拥有超级权限")
return web.StackError(err)
}, func() error {
_, err := a.NewRole(0, "财务", "财务")
return web.StackError(err)
}, func() error {
_, err := a.NewRole(0, "编辑", "仅有编辑文章的相关权限")
return web.StackError(err)
})
return nil
}, func() error {
us := []orm.TableNamer{
&modelAdmin{
ID: 1,
Name: "管理员",
Nickname: "管理员",
Super: true,
Sex: SexMale,
Username: "admin",
},
&modelAdmin{
ID: 2,
Name: "测试用户1",
Nickname: "测试用户1",
Sex: SexMale,
Username: "u2",
},
&modelAdmin{
ID: 3,
State: StateLocked,
Name: "测试用户2",
Nickname: "测试用户2",
Sex: SexFemale,
Username: "u3",
},
&modelAdmin{
ID: 4,
State: StateLeft,
Name: "测试用户3",
Nickname: "测试用户3",
Sex: SexUnknown,
Username: "u4",
},
}
return web.StackError(e.InsertMany(10, us...))
}, func() error {
a, err := rbac.New(mod, db, nil)
if err != nil {
return web.StackError(err)
}
tx, err := db.Begin()
if err != nil {
return web.StackError(err)
}
cmfx.Init(func() {
tx.Rollback()
}, func() error {
return web.StackError(a.Link(tx, 1, 1))
}, func() error {
return web.StackError(a.Link(tx, 2, 2))
}, func() error {
return web.StackError(a.Link(tx, 3, 2, 3))
}, func() error {
return web.StackError(a.Link(tx, 4, 2, 3))
})
return web.StackError(tx.Commit())
}, func() (err error) {
a := passport.New(mod, db)
p := a.Password(mod + "_" + authPasswordType)
tx, err := db.Begin()
if err != nil {
return web.StackError(err)
}
cmfx.Init(func() {
tx.Rollback()
}, func() error {
return web.StackError(p.Add(tx, 1, "admin", defaultPassword))
}, func() error {
return web.StackError(p.Add(tx, 2, "u1", defaultPassword))
}, func() error {
return web.StackError(p.Add(tx, 3, "u2", defaultPassword))
}, func() error {
return web.StackError(p.Add(tx, 4, "u3", defaultPassword))
})
return web.StackError(tx.Commit())
})
}