AdminInterface
This commit is contained in:
parent
a61fc7b665
commit
92c45f1165
8
src/main/kotlin/AdminInterface.kt
Normal file
8
src/main/kotlin/AdminInterface.kt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import model.User
|
||||||
|
|
||||||
|
interface AdminInterface {
|
||||||
|
fun allUsers(authorizeList: MutableList<User>)
|
||||||
|
fun changeUserPassword(authorizeList: MutableList<User>)
|
||||||
|
fun removeUser(authorizeList: MutableList<User>)
|
||||||
|
fun allUsersSorted(authorizeList: MutableList<User>)
|
||||||
|
}
|
@ -1,5 +1,7 @@
|
|||||||
import model.UserAuthorize
|
import model.AdminUser
|
||||||
import model.Role
|
import model.DefaultUser
|
||||||
|
import model.ManagerUser
|
||||||
|
import model.User
|
||||||
import java.security.SecureRandom
|
import java.security.SecureRandom
|
||||||
import java.security.spec.KeySpec
|
import java.security.spec.KeySpec
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
@ -8,12 +10,16 @@ import javax.crypto.SecretKeyFactory
|
|||||||
import javax.crypto.spec.PBEKeySpec
|
import javax.crypto.spec.PBEKeySpec
|
||||||
import java.util.Base64
|
import java.util.Base64
|
||||||
|
|
||||||
val authorizeList = mutableListOf<UserAuthorize>()
|
val authorizeList = mutableListOf<User>()
|
||||||
val salt = "sallllt"
|
val salt = "sallllt"
|
||||||
private const val HASH_LENGTH = 256
|
private const val HASH_LENGTH = 256
|
||||||
private const val ITERATIONS = 65536
|
private const val ITERATIONS = 65536
|
||||||
|
|
||||||
fun main(){
|
fun main(){
|
||||||
|
authorizeList.add(AdminUser(email = "@1", password = hashPassword("qwerty123", salt), login = "aboba", lastAuthorizeDate = LocalDate.of(2022, 11, 25), userId = 1))
|
||||||
|
authorizeList.add(ManagerUser(email = "@2", password = hashPassword("qwerty123", salt), login = "abiba", lastAuthorizeDate = LocalDate.of(2023, 3, 10), userId = 2))
|
||||||
|
authorizeList.add(DefaultUser(email = "@3", password = hashPassword("qwerty123", salt), login = "abobus", lastAuthorizeDate = LocalDate.of(2023, 5, 15), userId = 3))
|
||||||
|
|
||||||
while (true){
|
while (true){
|
||||||
println("1) registration")
|
println("1) registration")
|
||||||
println("2) authorization")
|
println("2) authorization")
|
||||||
@ -25,7 +31,6 @@ fun main(){
|
|||||||
println(it.email)
|
println(it.email)
|
||||||
println(it.password)
|
println(it.password)
|
||||||
println(it.login)
|
println(it.login)
|
||||||
println(it.role.roleName)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@ -34,7 +39,7 @@ fun main(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun registration(): UserAuthorize{
|
fun registration(): User{
|
||||||
println("email")
|
println("email")
|
||||||
val userEmail = readlnOrNull()
|
val userEmail = readlnOrNull()
|
||||||
checkNotNull(userEmail)
|
checkNotNull(userEmail)
|
||||||
@ -63,20 +68,39 @@ fun registration(): UserAuthorize{
|
|||||||
"more longer login"
|
"more longer login"
|
||||||
}
|
}
|
||||||
|
|
||||||
return UserAuthorize(
|
println("1)admin, 2)manager, 3)defaultUser")
|
||||||
|
val role = readlnOrNull()
|
||||||
|
checkNotNull(role)
|
||||||
|
|
||||||
|
return when(role){
|
||||||
|
"1" -> return AdminUser(
|
||||||
authorizeList.size + 1,
|
authorizeList.size + 1,
|
||||||
login = userLogin,
|
login = userLogin,
|
||||||
password = hashPassword(userPassword, salt),
|
password = hashPassword(userPassword, salt),
|
||||||
lastAuthorizeDate = LocalDate.now(),
|
lastAuthorizeDate = LocalDate.now(),
|
||||||
email = userEmail,
|
email = userEmail,
|
||||||
role = Role(
|
|
||||||
roleId = 1,
|
|
||||||
roleName = "User"
|
|
||||||
)
|
)
|
||||||
|
"2" -> return ManagerUser(
|
||||||
|
authorizeList.size + 1,
|
||||||
|
login = userLogin,
|
||||||
|
password = hashPassword(userPassword, salt),
|
||||||
|
lastAuthorizeDate = LocalDate.now(),
|
||||||
|
email = userEmail,
|
||||||
)
|
)
|
||||||
|
"3" -> return DefaultUser(
|
||||||
|
authorizeList.size + 1,
|
||||||
|
login = userLogin,
|
||||||
|
password = hashPassword(userPassword, salt),
|
||||||
|
lastAuthorizeDate = LocalDate.now(),
|
||||||
|
email = userEmail,
|
||||||
|
)
|
||||||
|
|
||||||
|
else -> {throw IllegalArgumentException("error")}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun authorization(): String{
|
fun authorization(): String{
|
||||||
|
var adminChoose = true
|
||||||
println("email")
|
println("email")
|
||||||
val userEmail = readlnOrNull()
|
val userEmail = readlnOrNull()
|
||||||
checkNotNull(userEmail)
|
checkNotNull(userEmail)
|
||||||
@ -92,9 +116,31 @@ fun authorization(): String{
|
|||||||
"incorrect password"
|
"incorrect password"
|
||||||
}
|
}
|
||||||
|
|
||||||
user.lastAuthorizeDate = LocalDate.now()
|
if (user is AdminUser){
|
||||||
|
while (adminChoose == true){
|
||||||
|
adminChoose = adminFunc(user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return user.role.roleName
|
return "agada"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun adminFunc(user: AdminUser): Boolean{
|
||||||
|
println("1) вывести всех пользователей")
|
||||||
|
println("2) поменять пароль пользователя")
|
||||||
|
println("3) удалить пользователя")
|
||||||
|
println("4) вывести с сортировкой по убыванию")
|
||||||
|
println("5) назад")
|
||||||
|
|
||||||
|
var choosen = readln()
|
||||||
|
when(choosen){
|
||||||
|
"1" -> user.allUsers(authorizeList)
|
||||||
|
"2" -> user.changeUserPassword(authorizeList)
|
||||||
|
"3" -> user.removeUser(authorizeList)
|
||||||
|
"4" -> user.allUsersSorted(authorizeList)
|
||||||
|
"5" -> return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hashPassword(password: String, salt: String): String {
|
fun hashPassword(password: String, salt: String): String {
|
||||||
|
50
src/main/kotlin/model/AdminUser.kt
Normal file
50
src/main/kotlin/model/AdminUser.kt
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import AdminInterface
|
||||||
|
import hashPassword
|
||||||
|
import salt
|
||||||
|
import java.time.LocalDate
|
||||||
|
|
||||||
|
class AdminUser(
|
||||||
|
userId: Int,
|
||||||
|
email: String,
|
||||||
|
login: String,
|
||||||
|
password: String,
|
||||||
|
lastAuthorizeDate: LocalDate,
|
||||||
|
) : User(userId, email, login, password, lastAuthorizeDate), AdminInterface{
|
||||||
|
override fun allUsers(authorizeList: MutableList<User>){
|
||||||
|
for (user in authorizeList){
|
||||||
|
println(user.login)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
override fun changeUserPassword(authorizeList: MutableList<User>){
|
||||||
|
println("email for update")
|
||||||
|
val email = readln()
|
||||||
|
println("new password")
|
||||||
|
val password = readln()
|
||||||
|
|
||||||
|
val user = authorizeList.find { it.email == email }
|
||||||
|
require(user != null){
|
||||||
|
"no user with that email"
|
||||||
|
}
|
||||||
|
|
||||||
|
user.password = hashPassword(password, salt)
|
||||||
|
}
|
||||||
|
override fun removeUser(authorizeList: MutableList<User>){
|
||||||
|
println("email for removing")
|
||||||
|
val email = readln()
|
||||||
|
|
||||||
|
val removed = authorizeList.removeIf{it.email == email}
|
||||||
|
if (removed){
|
||||||
|
println("removed")
|
||||||
|
} else{
|
||||||
|
println("didn't")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
override fun allUsersSorted(authorizeList: MutableList<User>){
|
||||||
|
authorizeList.sortByDescending { it.lastAuthorizeDate }
|
||||||
|
for(user in authorizeList){
|
||||||
|
println(user.login + " auth at " + user.lastAuthorizeDate)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
src/main/kotlin/model/DefaultUser.kt
Normal file
11
src/main/kotlin/model/DefaultUser.kt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import java.time.LocalDate
|
||||||
|
|
||||||
|
class DefaultUser(
|
||||||
|
userId: Int,
|
||||||
|
email: String,
|
||||||
|
login: String,
|
||||||
|
password: String,
|
||||||
|
lastAuthorizeDate: LocalDate,
|
||||||
|
) : User(userId, email, login, password, lastAuthorizeDate)
|
11
src/main/kotlin/model/ManagerUser.kt
Normal file
11
src/main/kotlin/model/ManagerUser.kt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import java.time.LocalDate
|
||||||
|
|
||||||
|
class ManagerUser(
|
||||||
|
userId: Int,
|
||||||
|
email: String,
|
||||||
|
login: String,
|
||||||
|
password: String,
|
||||||
|
lastAuthorizeDate: LocalDate,
|
||||||
|
) : User(userId, email, login, password, lastAuthorizeDate)
|
@ -1,6 +0,0 @@
|
|||||||
package model
|
|
||||||
|
|
||||||
data class Role(
|
|
||||||
val roleId: Int,
|
|
||||||
val roleName: String
|
|
||||||
)
|
|
@ -1,13 +1,11 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
import java.util.Date
|
|
||||||
|
|
||||||
data class UserAuthorize(
|
open class User(
|
||||||
val userId: Int,
|
val userId: Int,
|
||||||
var email: String,
|
var email: String,
|
||||||
val login: String,
|
val login: String,
|
||||||
var password: String,
|
var password: String,
|
||||||
var lastAuthorizeDate: LocalDate,
|
var lastAuthorizeDate: LocalDate,
|
||||||
val role: Role
|
|
||||||
)
|
)
|
Loading…
Reference in New Issue
Block a user