Beispiel #1
0
// 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
}
Beispiel #2
0
// 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
}
Beispiel #3
0
// 获取当前登录用户信息(常用信息)
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
}
Beispiel #4
0
// 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
}