Merge branch 'master' of github.com:synebula-myths/zeus
This commit is contained in:
@@ -65,11 +65,17 @@ class UserApp(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PutMapping("/{key}/password/reset")
|
||||||
|
fun resetPassword(@PathVariable key: String, password: String, token: String?): HttpMessage {
|
||||||
|
return this.safeExecute("重置用户密码出现异常") {
|
||||||
|
it.load((this.service as IUserService).resetPassword(key, password, token))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@PutMapping("/{key}/password")
|
@PutMapping("/{key}/password")
|
||||||
fun changePassword(@PathVariable key: String, password: String, token: String?): HttpMessage {
|
fun changePassword(@PathVariable key: String, password: String, newPassword: String): HttpMessage {
|
||||||
return this.safeExecute("修改用户密码出现异常") {
|
return this.safeExecute("修改用户密码出现异常") {
|
||||||
it.load((this.service as IUserService).changePassword(key, password, token))
|
it.load((this.service as IUserService).changePassword(key, password, newPassword))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,9 +16,18 @@ interface IUserService : IService<String> {
|
|||||||
* 激活用户
|
* 激活用户
|
||||||
*
|
*
|
||||||
* @param key 用户ID
|
* @param key 用户ID
|
||||||
* @param token 激活密令
|
* @param password 旧密码
|
||||||
|
* @param newPassword 新密码
|
||||||
*/
|
*/
|
||||||
fun changePassword(key: String, password: String, token: String?): Message<Any>
|
fun changePassword(key: String, password: String, newPassword: String): Message<Any>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 激活用户
|
||||||
|
*
|
||||||
|
* @param key 用户ID
|
||||||
|
* @param password 新密码
|
||||||
|
*/
|
||||||
|
fun resetPassword(key: String, password: String, token: String?): Message<Any>
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -52,16 +52,30 @@ class UserService(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun changePassword(key: String, password: String, token: String?): Message<Any> {
|
override fun changePassword(key: String, password: String, newPassword: String): Message<Any> {
|
||||||
val user = this.repository.get(key, this.clazz)
|
val user = this.repository.get(key, this.clazz)
|
||||||
return if (user.token == null || token == user.token) {
|
return if (user.password == password.toMd5()) {
|
||||||
|
user.password = newPassword.toMd5()
|
||||||
|
user.token = null
|
||||||
|
this.repository.update(user, this.clazz)
|
||||||
|
Message()
|
||||||
|
} else {
|
||||||
|
logger.warn(this, "用户修改${user.name}密码失败, 旧密码验证不通过")
|
||||||
|
Message(Status.Failure, "用户修改密码失败, 旧密码验证不通过")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override fun resetPassword(key: String, password: String, token: String?): Message<Any> {
|
||||||
|
val user = this.repository.get(key, this.clazz)
|
||||||
|
return if (token == user.token) {
|
||||||
user.password = password.toMd5()
|
user.password = password.toMd5()
|
||||||
user.token = null
|
user.token = null
|
||||||
this.repository.update(user, this.clazz)
|
this.repository.update(user, this.clazz)
|
||||||
Message()
|
Message()
|
||||||
} else {
|
} else {
|
||||||
logger.warn(this, "用户${user.name}密码修改失败, 系统密码修改令牌:${user.token}, {key: ${key} , token: ${token}")
|
logger.warn(this, "用户重置${user.name}密码失败, 系统密码修改令牌:${user.token}, {key: ${key} , token: ${token}")
|
||||||
Message(Status.Failure, "用户密码修改失败, 如需重置密码请从系统发送的邮件链接中重置")
|
Message(Status.Failure, "用户重置密码失败, 如需重置密码请从系统发送的邮件链接中重置")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,9 @@ import com.synebula.gaea.data.message.Message
|
|||||||
import com.synebula.gaea.data.message.Status
|
import com.synebula.gaea.data.message.Status
|
||||||
import com.synebula.gaea.extension.toMd5
|
import com.synebula.gaea.extension.toMd5
|
||||||
import com.synebula.gaea.mongo.query.MongoGenericQuery
|
import com.synebula.gaea.mongo.query.MongoGenericQuery
|
||||||
import com.synebula.gaea.mongo.query.MongoQuery
|
import com.synebula.gaea.mongo.whereId
|
||||||
import com.synebula.zeus.query.contr.IUserQuery
|
import com.synebula.zeus.query.contr.IUserQuery
|
||||||
|
import com.synebula.zeus.query.view.RoleView
|
||||||
import com.synebula.zeus.query.view.SignUserView
|
import com.synebula.zeus.query.view.SignUserView
|
||||||
import com.synebula.zeus.query.view.UserView
|
import com.synebula.zeus.query.view.UserView
|
||||||
import org.springframework.data.mongodb.core.MongoTemplate
|
import org.springframework.data.mongodb.core.MongoTemplate
|
||||||
@@ -24,9 +25,10 @@ class UserQuery(template: MongoTemplate) :
|
|||||||
.and("alive").isEqualTo(true)
|
.and("alive").isEqualTo(true)
|
||||||
)
|
)
|
||||||
val user = this.template.findOne(query, this.clazz!!, "user")
|
val user = this.template.findOne(query, this.clazz!!, "user")
|
||||||
return if (user != null)
|
return if (user != null) {
|
||||||
Message(SignUserView(user.id, user.name, user.role ?: ""))
|
val role = this.template.findOne(whereId(user.role), RoleView::class.java, "role")
|
||||||
else
|
Message(SignUserView(user.id, user.name, user.realName ?: "", user.role ?: "", role?.name ?: ""))
|
||||||
|
} else
|
||||||
Message(Status.Failure, "用户名或密码错误")
|
Message(Status.Failure, "用户名或密码错误")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,5 +3,7 @@ package com.synebula.zeus.query.view
|
|||||||
class SignUserView(
|
class SignUserView(
|
||||||
var id: String = "",
|
var id: String = "",
|
||||||
var name: String = "",
|
var name: String = "",
|
||||||
var role: String = ""
|
var realName: String = "",
|
||||||
|
var role: String = "",
|
||||||
|
var roleName: String = ""
|
||||||
)
|
)
|
||||||
Reference in New Issue
Block a user