Complete core functions #9

Merged
FatttSnake merged 171 commits from FatttSnake into dev 2024-02-23 11:56:35 +08:00
Showing only changes of commit 5e21963610 - Show all commits

View File

@@ -0,0 +1,52 @@
package top.fatweb.api.config
import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper
import jakarta.annotation.PostConstruct
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.stereotype.Component
import top.fatweb.api.entity.permission.User
import top.fatweb.api.service.IUserService
import kotlin.random.Random
@Component
class InitConfig(
private val userService: IUserService, private val passwordEncoder: PasswordEncoder
) {
private val logger: Logger = LoggerFactory.getLogger(this::class.java)
@PostConstruct
fun init() {
if (!userService.exists(KtQueryWrapper(User()).eq(User::id, 0))) {
val rawPassword = getRandPassword(10)
val encodedPassword = passwordEncoder.encode(rawPassword)
val user = User().apply {
id = 0
username = "admin"
password = encodedPassword
locking = 0
enable = 1
}
if (userService.save(user)) {
logger.warn("First startup, create administrator - username: admin, password: $rawPassword")
logger.warn("This information will only be shown once. Please change your password promptly after logging in.")
}
}
}
private fun getRandPassword(length: Int): String {
val characterSet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
val random = Random(System.nanoTime())
val password = StringBuilder()
for (i in 0 until length) {
val rIndex = random.nextInt(characterSet.length)
password.append(characterSet[rIndex])
}
return password.toString()
}
}