diff --git a/internal/web/actions/default/settings/login/index.go b/internal/web/actions/default/settings/login/index.go index 15365056..71a1d749 100644 --- a/internal/web/actions/default/settings/login/index.go +++ b/internal/web/actions/default/settings/login/index.go @@ -1,6 +1,11 @@ package login -import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" +) type IndexAction struct { actionutils.ParentAction @@ -11,5 +16,63 @@ func (this *IndexAction) Init() { } func (this *IndexAction) RunGet(params struct{}) { + adminResp, err := this.RPC().AdminRPC().FindEnabledAdmin(this.AdminContext(), &pb.FindEnabledAdminRequest{AdminId: this.AdminId()}) + if err != nil { + this.ErrorPage(err) + return + } + admin := adminResp.Admin + if admin == nil { + this.NotFound("admin", this.AdminId()) + return + } + this.Data["admin"] = maps.Map{ + "username": admin.Username, + "fullname": admin.Fullname, + } + this.Show() } + +func (this *IndexAction) RunPost(params struct { + Username string + Password string + Password2 string + + Must *actions.Must +}) { + params.Must. + Field("username", params.Username). + Require("请输入登录用户名"). + Match(`^[a-zA-Z0-9_]+$`, "用户名中只能包含英文、数字或下划线") + + existsResp, err := this.RPC().AdminRPC().CheckAdminUsername(this.AdminContext(), &pb.CheckAdminUsernameRequest{ + AdminId: this.AdminId(), + Username: params.Username, + }) + if err != nil { + this.ErrorPage(err) + return + } + if existsResp.Exists { + this.FailField("username", "此用户名已经被别的管理员使用,请换一个") + } + + if len(params.Password) > 0 { + if params.Password != params.Password2 { + this.FailField("password2", "两次输入的密码不一致") + } + } + + _, err = this.RPC().AdminRPC().UpdateAdminLogin(this.AdminContext(), &pb.UpdateAdminLoginRequest{ + AdminId: this.AdminId(), + Username: params.Username, + Password: params.Password, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/settings/login/init.go b/internal/web/actions/default/settings/login/init.go index 15e0d0ba..3473eba2 100644 --- a/internal/web/actions/default/settings/login/init.go +++ b/internal/web/actions/default/settings/login/init.go @@ -12,7 +12,7 @@ func init() { Helper(helpers.NewUserMustAuth()). Helper(settingutils.NewHelper("login")). Prefix("/settings/login"). - Get("", new(IndexAction)). + GetPost("", new(IndexAction)). EndAll() }) } diff --git a/internal/web/actions/default/settings/profile/index.go b/internal/web/actions/default/settings/profile/index.go index 0c8d28d4..43756099 100644 --- a/internal/web/actions/default/settings/profile/index.go +++ b/internal/web/actions/default/settings/profile/index.go @@ -1,6 +1,11 @@ package profile -import "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/iwind/TeaGo/actions" + "github.com/iwind/TeaGo/maps" +) type IndexAction struct { actionutils.ParentAction @@ -11,5 +16,41 @@ func (this *IndexAction) Init() { } func (this *IndexAction) RunGet(params struct{}) { + adminResp, err := this.RPC().AdminRPC().FindEnabledAdmin(this.AdminContext(), &pb.FindEnabledAdminRequest{AdminId: this.AdminId()}) + if err != nil { + this.ErrorPage(err) + return + } + admin := adminResp.Admin + if admin == nil { + this.NotFound("admin", this.AdminId()) + return + } + + this.Data["admin"] = maps.Map{ + "fullname": admin.Fullname, + } + this.Show() } + +func (this *IndexAction) RunPost(params struct { + Fullname string + + Must *actions.Must +}) { + params.Must. + Field("fullname", params.Fullname). + Require("请输入你的姓名") + + _, err := this.RPC().AdminRPC().UpdateAdmin(this.AdminContext(), &pb.UpdateAdminRequest{ + AdminId: this.AdminId(), + Fullname: params.Fullname, + }) + if err != nil { + this.ErrorPage(err) + return + } + + this.Success() +} diff --git a/internal/web/actions/default/settings/profile/init.go b/internal/web/actions/default/settings/profile/init.go index fbce4b3b..23858f75 100644 --- a/internal/web/actions/default/settings/profile/init.go +++ b/internal/web/actions/default/settings/profile/init.go @@ -12,7 +12,7 @@ func init() { Helper(helpers.NewUserMustAuth()). Helper(settingutils.NewHelper("profile")). Prefix("/settings/profile"). - Get("", new(IndexAction)). + GetPost("", new(IndexAction)). EndAll() }) } diff --git a/web/views/@default/settings/login/index.html b/web/views/@default/settings/login/index.html index 79a92a06..1d45d811 100644 --- a/web/views/@default/settings/login/index.html +++ b/web/views/@default/settings/login/index.html @@ -1,3 +1,30 @@ {$layout} -

此功能暂未开放,敬请期待。

\ No newline at end of file +
+ +
+ + + + + + + + + + + + + +
登录用户名 * + +

只能含有英文、数字或下划线。

+
登录密码 + +

不填表示保留原有密码。

+
确认密码 + +

不填表示保留原有密码。

+
+ +
\ No newline at end of file diff --git a/web/views/@default/settings/login/index.js b/web/views/@default/settings/login/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/settings/login/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file diff --git a/web/views/@default/settings/profile/index.html b/web/views/@default/settings/profile/index.html index 79a92a06..17a6e979 100644 --- a/web/views/@default/settings/profile/index.html +++ b/web/views/@default/settings/profile/index.html @@ -1,3 +1,15 @@ {$layout} -

此功能暂未开放,敬请期待。

\ No newline at end of file +
+ +
+ + + + + +
你的姓名 * + +
+ +
\ No newline at end of file diff --git a/web/views/@default/settings/profile/index.js b/web/views/@default/settings/profile/index.js new file mode 100644 index 00000000..295a9aaf --- /dev/null +++ b/web/views/@default/settings/profile/index.js @@ -0,0 +1,3 @@ +Tea.context(function () { + this.success = NotifyReloadSuccess("保存成功") +}) \ No newline at end of file