Merge pull request #166 from trheyi/main
[change] login widget for the xgen-next (done)
This commit is contained in:
commit
b273a79070
10 changed files with 49 additions and 19 deletions
14
cmd/start.go
14
cmd/start.go
|
|
@ -247,12 +247,14 @@ func printApis(silent bool) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf(color.CyanString("\n%s(%d)\n", "WebSocket", len(websocket.Upgraders)))
|
if len(websocket.Upgraders) > 0 {
|
||||||
for name, upgrader := range websocket.Upgraders { // WebSocket
|
fmt.Printf(color.CyanString("\n%s(%d)\n", "WebSocket", len(websocket.Upgraders)))
|
||||||
fmt.Println(
|
for name, upgrader := range websocket.Upgraders { // WebSocket
|
||||||
colorMehtod("GET"),
|
fmt.Println(
|
||||||
color.WhiteString(filepath.Join("/websocket", name)),
|
colorMehtod("GET"),
|
||||||
"\tprocess:", upgrader.Process)
|
color.WhiteString(filepath.Join("/websocket", name)),
|
||||||
|
"\tprocess:", upgrader.Process)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ import (
|
||||||
"github.com/yaoapp/yao/task"
|
"github.com/yaoapp/yao/task"
|
||||||
"github.com/yaoapp/yao/websocket"
|
"github.com/yaoapp/yao/websocket"
|
||||||
"github.com/yaoapp/yao/widget"
|
"github.com/yaoapp/yao/widget"
|
||||||
|
"github.com/yaoapp/yao/widgets"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Load 根据配置加载 API, FLow, Model, Plugin
|
// Load 根据配置加载 API, FLow, Model, Plugin
|
||||||
|
|
@ -102,6 +103,14 @@ func Load(cfg config.Config) (err error) {
|
||||||
printErr(cfg.Mode, "Plugin", err)
|
printErr(cfg.Mode, "Plugin", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// XGEN NEXT
|
||||||
|
if os.Getenv("YAO_UI") == "XGEN-NEXT" {
|
||||||
|
err = widgets.Load(cfg) // Load build-in widgets
|
||||||
|
if err != nil {
|
||||||
|
printErr(cfg.Mode, "Widgets", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err = table.Load(cfg) // 加载数据表格 table
|
err = table.Load(cfg) // 加载数据表格 table
|
||||||
if err != nil {
|
if err != nil {
|
||||||
printErr(cfg.Mode, "Table", err)
|
printErr(cfg.Mode, "Table", err)
|
||||||
|
|
@ -119,8 +128,6 @@ func Load(cfg config.Config) (err error) {
|
||||||
|
|
||||||
importer.Load(cfg) // 加载数据导入 imports
|
importer.Load(cfg) // 加载数据导入 imports
|
||||||
|
|
||||||
// workflow.Load(cfg) // 加载工作流 workflow
|
|
||||||
|
|
||||||
err = api.Load(cfg) // 加载业务接口 API
|
err = api.Load(cfg) // 加载业务接口 API
|
||||||
if err != nil {
|
if err != nil {
|
||||||
printErr(cfg.Mode, "API", err)
|
printErr(cfg.Mode, "API", err)
|
||||||
|
|
|
||||||
1
main.go
1
main.go
|
|
@ -9,6 +9,7 @@ import (
|
||||||
_ "github.com/yaoapp/yao/network"
|
_ "github.com/yaoapp/yao/network"
|
||||||
_ "github.com/yaoapp/yao/system"
|
_ "github.com/yaoapp/yao/system"
|
||||||
_ "github.com/yaoapp/yao/user"
|
_ "github.com/yaoapp/yao/user"
|
||||||
|
_ "github.com/yaoapp/yao/utils"
|
||||||
_ "github.com/yaoapp/yao/xfs"
|
_ "github.com/yaoapp/yao/xfs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import (
|
||||||
func init() {
|
func init() {
|
||||||
gou.RegisterProcessHandler("xiang.user.Captcha", ProcessCaptcha)
|
gou.RegisterProcessHandler("xiang.user.Captcha", ProcessCaptcha)
|
||||||
gou.RegisterProcessHandler("xiang.user.Login", ProcessLogin)
|
gou.RegisterProcessHandler("xiang.user.Login", ProcessLogin)
|
||||||
|
gou.AliasProcess("xiang.user.Login", "yao.admin.Login")
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProcessLogin xiang.user.Login 用户登录
|
// ProcessLogin xiang.user.Login 用户登录
|
||||||
|
|
|
||||||
8
utils/process.go
Normal file
8
utils/process.go
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import "github.com/yaoapp/gou"
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
gou.AliasProcess("xiang.helper.Captcha", "yao.utils.Captcha")
|
||||||
|
gou.AliasProcess("xiang.helper.CaptchaValidate", "yao.utils.CaptchaValidate")
|
||||||
|
}
|
||||||
|
|
@ -158,7 +158,7 @@ func processXgen(process *gou.Process) interface{} {
|
||||||
if admin, has := login.Logins["admin"]; has {
|
if admin, has := login.Logins["admin"]; has {
|
||||||
xgenLogin["entry"]["admin"] = admin.Layout.Entry
|
xgenLogin["entry"]["admin"] = admin.Layout.Entry
|
||||||
xgenLogin["admin"] = map[string]interface{}{
|
xgenLogin["admin"] = map[string]interface{}{
|
||||||
"captcha": "/api/__yao/login/admin/captcha",
|
"captcha": "/api/__yao/login/admin/captcha?type=digit",
|
||||||
"login": "/api/__yao/login/admin",
|
"login": "/api/__yao/login/admin",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -166,7 +166,7 @@ func processXgen(process *gou.Process) interface{} {
|
||||||
if user, has := login.Logins["user"]; has {
|
if user, has := login.Logins["user"]; has {
|
||||||
xgenLogin["entry"]["user"] = user.Layout.Entry
|
xgenLogin["entry"]["user"] = user.Layout.Entry
|
||||||
xgenLogin["user"] = map[string]interface{}{
|
xgenLogin["user"] = map[string]interface{}{
|
||||||
"captcha": "/api/__yao/login/user/captcha",
|
"captcha": "/api/__yao/login/user/captcha?type=digit",
|
||||||
"login": "/api/__yao/login/user",
|
"login": "/api/__yao/login/user",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLoad(t *testing.T) {
|
func TestLoad(t *testing.T) {
|
||||||
|
os.Unsetenv("YAO_LANG")
|
||||||
lang.Load(config.Conf)
|
lang.Load(config.Conf)
|
||||||
err := Load(config.Conf)
|
err := Load(config.Conf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -126,11 +126,11 @@ func TestProcessXgen(t *testing.T) {
|
||||||
xgen := any.Of(res).MapStr().Dot()
|
xgen := any.Of(res).MapStr().Dot()
|
||||||
assert.Equal(t, "__yao", xgen.Get("apiPrefix"))
|
assert.Equal(t, "__yao", xgen.Get("apiPrefix"))
|
||||||
assert.Equal(t, "Another yao application", xgen.Get("description"))
|
assert.Equal(t, "Another yao application", xgen.Get("description"))
|
||||||
assert.Equal(t, "/api/__yao/login/admin/captcha", xgen.Get("login.admin.captcha"))
|
assert.Equal(t, "/api/__yao/login/admin/captcha?type=digit", xgen.Get("login.admin.captcha"))
|
||||||
assert.Equal(t, "/api/__yao/login/admin", xgen.Get("login.admin.login"))
|
assert.Equal(t, "/api/__yao/login/admin", xgen.Get("login.admin.login"))
|
||||||
assert.Equal(t, "/x/Table/pet", xgen.Get("login.entry.admin"))
|
assert.Equal(t, "/x/Table/pet", xgen.Get("login.entry.admin"))
|
||||||
assert.Equal(t, "/x/Table/dash", xgen.Get("login.entry.user"))
|
assert.Equal(t, "/x/Table/dash", xgen.Get("login.entry.user"))
|
||||||
assert.Equal(t, "/api/__yao/login/user/captcha", xgen.Get("login.user.captcha"))
|
assert.Equal(t, "/api/__yao/login/user/captcha?type=digit", xgen.Get("login.user.captcha"))
|
||||||
assert.Equal(t, "/api/__yao/login/user", xgen.Get("login.user.login"))
|
assert.Equal(t, "/api/__yao/login/user", xgen.Get("login.user.login"))
|
||||||
assert.Equal(t, os.Getenv("YAO_ENV"), xgen.Get("mode"))
|
assert.Equal(t, os.Getenv("YAO_ENV"), xgen.Get("mode"))
|
||||||
assert.Equal(t, "Demo Application", xgen.Get("name"))
|
assert.Equal(t, "Demo Application", xgen.Get("name"))
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import (
|
||||||
//
|
//
|
||||||
// API:
|
// API:
|
||||||
// GET /api/__yao/login/:id/captcha -> Default process: yao.utils.Captcha :query
|
// GET /api/__yao/login/:id/captcha -> Default process: yao.utils.Captcha :query
|
||||||
// POST /api/__yao/login/:id -> Default process: yao.user.Login :payload
|
// POST /api/__yao/login/:id -> Default process: yao.admin.Login :payload
|
||||||
//
|
//
|
||||||
|
|
||||||
// Logins the loaded login widgets
|
// Logins the loaded login widgets
|
||||||
|
|
@ -74,7 +74,7 @@ func exportAPI() error {
|
||||||
for _, dsl := range Logins {
|
for _, dsl := range Logins {
|
||||||
|
|
||||||
// login action
|
// login action
|
||||||
process := "yao.user.Login"
|
process := "yao.admin.Login"
|
||||||
args := []string{":payload"}
|
args := []string{":payload"}
|
||||||
if dsl.Action.Process != "" {
|
if dsl.Action.Process != "" {
|
||||||
process = dsl.Action.Process
|
process = dsl.Action.Process
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import (
|
||||||
|
|
||||||
func TestLoad(t *testing.T) {
|
func TestLoad(t *testing.T) {
|
||||||
|
|
||||||
|
os.Unsetenv("YAO_LANG")
|
||||||
lang.Load(config.Conf)
|
lang.Load(config.Conf)
|
||||||
err := Load(config.Conf)
|
err := Load(config.Conf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -23,7 +24,7 @@ func TestLoad(t *testing.T) {
|
||||||
|
|
||||||
assert.Equal(t, "admin", Logins["admin"].ID)
|
assert.Equal(t, "admin", Logins["admin"].ID)
|
||||||
assert.Equal(t, "Admin Login", Logins["admin"].Name)
|
assert.Equal(t, "Admin Login", Logins["admin"].Name)
|
||||||
assert.Equal(t, "yao.user.login", Logins["admin"].Action.Process)
|
assert.Equal(t, "yao.admin.Login", Logins["admin"].Action.Process)
|
||||||
assert.Equal(t, []string{":payload"}, Logins["admin"].Action.Args)
|
assert.Equal(t, []string{":payload"}, Logins["admin"].Action.Args)
|
||||||
assert.Equal(t, "yao.utils.Captcha", Logins["admin"].Layout.Captcha)
|
assert.Equal(t, "yao.utils.Captcha", Logins["admin"].Layout.Captcha)
|
||||||
assert.Equal(t, "/images/admin-cover.png", Logins["admin"].Layout.Cover)
|
assert.Equal(t, "/images/admin-cover.png", Logins["admin"].Layout.Cover)
|
||||||
|
|
@ -55,7 +56,7 @@ func TestLoadHK(t *testing.T) {
|
||||||
|
|
||||||
assert.Equal(t, "admin", Logins["admin"].ID)
|
assert.Equal(t, "admin", Logins["admin"].ID)
|
||||||
assert.Equal(t, "管理員登錄", Logins["admin"].Name)
|
assert.Equal(t, "管理員登錄", Logins["admin"].Name)
|
||||||
assert.Equal(t, "yao.user.login", Logins["admin"].Action.Process)
|
assert.Equal(t, "yao.admin.Login", Logins["admin"].Action.Process)
|
||||||
assert.Equal(t, []string{":payload"}, Logins["admin"].Action.Args)
|
assert.Equal(t, []string{":payload"}, Logins["admin"].Action.Args)
|
||||||
assert.Equal(t, "yao.utils.Captcha", Logins["admin"].Layout.Captcha)
|
assert.Equal(t, "yao.utils.Captcha", Logins["admin"].Layout.Captcha)
|
||||||
assert.Equal(t, "/images/admin-cover.png", Logins["admin"].Layout.Cover)
|
assert.Equal(t, "/images/admin-cover.png", Logins["admin"].Layout.Cover)
|
||||||
|
|
@ -87,7 +88,7 @@ func TestLoadCN(t *testing.T) {
|
||||||
|
|
||||||
assert.Equal(t, "admin", Logins["admin"].ID)
|
assert.Equal(t, "admin", Logins["admin"].ID)
|
||||||
assert.Equal(t, "管理员登录", Logins["admin"].Name)
|
assert.Equal(t, "管理员登录", Logins["admin"].Name)
|
||||||
assert.Equal(t, "yao.user.login", Logins["admin"].Action.Process)
|
assert.Equal(t, "yao.admin.Login", Logins["admin"].Action.Process)
|
||||||
assert.Equal(t, []string{":payload"}, Logins["admin"].Action.Args)
|
assert.Equal(t, []string{":payload"}, Logins["admin"].Action.Args)
|
||||||
assert.Equal(t, "yao.utils.Captcha", Logins["admin"].Layout.Captcha)
|
assert.Equal(t, "yao.utils.Captcha", Logins["admin"].Layout.Captcha)
|
||||||
assert.Equal(t, "/images/admin-cover.png", Logins["admin"].Layout.Cover)
|
assert.Equal(t, "/images/admin-cover.png", Logins["admin"].Layout.Cover)
|
||||||
|
|
|
||||||
|
|
@ -9,16 +9,26 @@ import (
|
||||||
// Load the widgets
|
// Load the widgets
|
||||||
func Load(cfg config.Config) error {
|
func Load(cfg config.Config) error {
|
||||||
|
|
||||||
|
// login widget
|
||||||
err := login.Load(cfg)
|
err := login.Load(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// app login
|
err = login.Export()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// app widget
|
||||||
err = app.Load(cfg)
|
err = app.Load(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
err = app.Export()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue