From efd2eb3c087076f574a89608fdb7b8efdd7ac7fa Mon Sep 17 00:00:00 2001 From: shy Date: Mon, 3 Jan 2022 13:31:44 +0800 Subject: [PATCH] add sso --- base/web/serve.go | 3 ++- core/chat/header.go | 4 ++++ core/chat/sso.go | 25 +++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 core/chat/sso.go diff --git a/base/web/serve.go b/base/web/serve.go index 6243b6aa..ceaab02d 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -135,7 +135,7 @@ func _serve_handle(key string, cmd *ice.Command, msg *ice.Message, w http.Respon } // 请求地址 - msg.Option(ice.MSG_USERWEB, kit.Select(msg.Config(DOMAIN), kit.Select(r.Header.Get("X-Host"), r.Header.Get("Referer")))) + msg.Option(ice.MSG_USERWEB, kit.Select(msg.Config(DOMAIN), kit.Select(r.Header.Get("Referer"), r.Header.Get("X-Host")))) msg.Option(ice.MSG_USERADDR, kit.Select(r.RemoteAddr, r.Header.Get(ice.MSG_USERADDR))) msg.Option(ice.MSG_USERIP, r.Header.Get(ice.MSG_USERIP)) msg.Option(ice.MSG_USERUA, r.Header.Get("User-Agent")) @@ -145,6 +145,7 @@ func _serve_handle(key string, cmd *ice.Command, msg *ice.Message, w http.Respon if sessid := msg.Option(CookieName(msg.Option(ice.MSG_USERWEB))); sessid != "" { msg.Option(ice.MSG_SESSID, sessid) } + msg.Debug("what %v", msg.FormatMeta()) // 参数转换 for k, v := range r.Form { diff --git a/core/chat/header.go b/core/chat/header.go index 36b20d05..76038792 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -86,6 +86,10 @@ func init() { }, Commands: map[string]*ice.Command{ web.WEB_LOGIN: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { switch arg[0] { + case "/sso/": + if m.Option(ice.MSG_USERNAME) != "" { + return + } case "/pod/": return // 免登录 case "/header": diff --git a/core/chat/sso.go b/core/chat/sso.go new file mode 100644 index 00000000..66d1242c --- /dev/null +++ b/core/chat/sso.go @@ -0,0 +1,25 @@ +package chat + +import ( + ice "shylinux.com/x/icebergs" + "shylinux.com/x/icebergs/base/aaa" + "shylinux.com/x/icebergs/base/mdb" + "shylinux.com/x/icebergs/base/web" + kit "shylinux.com/x/toolkits" +) + +const SSO = "sso" + +func init() { + Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ + "/sso": {Name: "/sso", Help: "登录", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + sessid := m.Cmdx(web.SPACE, m.Option(web.SPACE), aaa.SESS, mdb.CREATE, + mdb.TIME, m.Time("720h"), + aaa.USERROLE, m.Option(ice.MSG_USERROLE), + aaa.USERNAME, m.Option(ice.MSG_USERNAME), + aaa.USERNICK, m.Option(ice.MSG_USERNICK), + ) + m.RenderRedirect(kit.MergeURL(m.Option("back"), ice.MSG_SESSID, sessid)) + }}, + }}) +}