// UpdatePasswd 更新用户密码 func (self UserLogic) UpdatePasswd(ctx context.Context, username, curPasswd, newPasswd string) (string, error) { _, err := self.Login(ctx, username, curPasswd) if err != nil { return "原密码填写错误", err } userLogin := &model.UserLogin{ Passwd: newPasswd, } err = userLogin.GenMd5Passwd() if err != nil { return err.Error(), err } changeData := map[string]interface{}{ "passwd": newPasswd, "passcode": userLogin.Passcode, } _, err = MasterDB.Table(userLogin).Where("username=?", username).Update(changeData) if err != nil { logger.Errorf("用户 %s 更新密码错误:%s", username, err) return "对不起,内部服务错误!", err } return "", nil }
// RecordLoginTime 记录用户最后登录时间 func (UserLogic) RecordLoginTime(username string) error { _, err := MasterDB.Table(new(model.UserLogin)).Where("username=?", username). Update(map[string]interface{}{"login_time": time.Now()}) if err != nil { logger.Errorf("记录用户 %q 登录时间错误:%s", username, err) } return err }
// 获取当前登录用户信息(常用信息) func (self UserLogic) FindCurrentUser(ctx context.Context, username interface{}) *model.Me { objLog := GetLogger(ctx) user := &model.User{} _, err := MasterDB.Where("username=? AND status<=?", username, model.UserStatusAudit).Get(user) if err != nil { objLog.Errorf("获取用户 %q 信息失败:%s", username, err) return &model.Me{} } if user.Uid == 0 { logger.Infof("用户 %q 不存在或状态不正常!", username) return &model.Me{} } me := &model.Me{ Uid: user.Uid, Username: user.Username, Email: user.Email, Avatar: user.Avatar, Status: user.Status, IsRoot: user.IsRoot, MsgNum: DefaultMessage.FindNotReadMsgNum(ctx, user.Uid), } // TODO: 先每次都记录登录时间 go self.RecordLoginTime(user.Username) if user.IsRoot { me.IsAdmin = true return me } // 获取角色信息 userRoleList := make([]*model.UserRole, 0) err = MasterDB.Where("uid=?", user.Uid).Find(&userRoleList) if err != nil { logger.Errorf("获取用户 %q 角色 信息失败:%s", username, err) return me } for _, userRole := range userRoleList { if userRole.Roleid <= model.AdminMinRoleId { // 是管理员 me.IsAdmin = true break } } return me }
// Modify 修改文章信息 func (ArticleLogic) Modify(ctx context.Context, user *model.Me, form url.Values) (errMsg string, err error) { form.Set("op_user", user.Username) fields := []string{ "title", "url", "cover", "author", "author_txt", "lang", "pub_date", "content", "tags", "status", "op_user", } change := make(map[string]string) for _, field := range fields { change[field] = form.Get(field) } id := form.Get("id") _, err = MasterDB.Table(new(model.Article)).Id(id).Update(change) if err != nil { logger.Errorf("更新文章 【%s】 信息失败:%s\n", id, err) errMsg = "对不起,服务器内部错误,请稍后再试!" return } return }