diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/kotlin/Interface/AdminService.kt b/src/main/kotlin/Interface/AdminService.kt new file mode 100644 index 0000000..5b27ee7 --- /dev/null +++ b/src/main/kotlin/Interface/AdminService.kt @@ -0,0 +1,8 @@ +package Interface + +import model.User + +interface AdminService { + fun removeUserById(userId: Int): Boolean + fun getAllUsers(): List +} diff --git a/src/main/kotlin/Interface/AuthorizeService.kt b/src/main/kotlin/Interface/AuthorizeService.kt new file mode 100644 index 0000000..3a2ce89 --- /dev/null +++ b/src/main/kotlin/Interface/AuthorizeService.kt @@ -0,0 +1,9 @@ +package Interface + +import model.User + +/* +Interface AuthorizeService { + fun registration(user: User):Boolean + fun +}*/ diff --git a/src/main/kotlin/Interface/PasswordService.kt b/src/main/kotlin/Interface/PasswordService.kt new file mode 100644 index 0000000..278242c --- /dev/null +++ b/src/main/kotlin/Interface/PasswordService.kt @@ -0,0 +1,6 @@ +package Interface + +interface PasswordService{ + fun hashPassword(password:String, salt:ByteArray):String + fun matches(password:String, salt:ByteArray, hashedPassword:String):Boolean +} \ No newline at end of file diff --git a/src/main/kotlin/RepositoryImpl/AdminServiceImpl.kt b/src/main/kotlin/RepositoryImpl/AdminServiceImpl.kt new file mode 100644 index 0000000..35367dc --- /dev/null +++ b/src/main/kotlin/RepositoryImpl/AdminServiceImpl.kt @@ -0,0 +1,25 @@ +package RepositoryImpl + +import Interface.AdminService +import model.User + +class AdminServiceImpl : AdminService { + private val users = mutableListOf() + + override fun removeUserById(userId: Int): Boolean { + val user = users.find { it.userId == userId } + return if (user != null) { + users.remove(user) + true } + else + { false } + } + + override fun getAllUsers(): List { + return users + } + +} + + + diff --git a/src/main/kotlin/RepositoryImpl/AuthorizeServiceImpl.kt b/src/main/kotlin/RepositoryImpl/AuthorizeServiceImpl.kt new file mode 100644 index 0000000..47cb3cd --- /dev/null +++ b/src/main/kotlin/RepositoryImpl/AuthorizeServiceImpl.kt @@ -0,0 +1,11 @@ +/* +package RepositoryImpl + +import Interface.AuthorizeService +import model.User + +class AuthorizeServiceImpl: AuthorizeService{ + override fun registration(user: User): Boolean { + adminService.addUser(user + } +}*/ diff --git a/src/main/kotlin/RepositoryImpl/PasswordServiceImpl.kt b/src/main/kotlin/RepositoryImpl/PasswordServiceImpl.kt new file mode 100644 index 0000000..1552605 --- /dev/null +++ b/src/main/kotlin/RepositoryImpl/PasswordServiceImpl.kt @@ -0,0 +1,20 @@ +package RepositoryImpl + +import Interface.PasswordService +import javax.crypto.SecretKeyFactory +import javax.crypto.spec.PBEKeySpec + +class PasswordServiceImpl : PasswordService { + override fun hashPassword(password: String, salt: ByteArray): String { + val spec = PBEKeySpec(password.toCharArray(), salt, 10000, 256) + val factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1") + val hash = factory.generateSecret(spec).encoded + return salt.joinToString("") { "%02x".format(it) } + ":" + hash.joinToString("") { "%02x".format(it) } + } + + override fun matches(password: String, salt: ByteArray, hashedPassword: String): Boolean { + val generatedHash = hashPassword(password, salt) + return generatedHash == hashedPassword + } +} + diff --git a/src/main/kotlin/model/AdminUser.kt b/src/main/kotlin/model/AdminUser.kt new file mode 100644 index 0000000..12fe212 --- /dev/null +++ b/src/main/kotlin/model/AdminUser.kt @@ -0,0 +1,14 @@ +package model + +import java.time.LocalDate + +class AdminUser( + userId: Int, + login: String, + password: String, + lastAuthorizeDate: LocalDate, + email: String, + phone: String +) : User(userId, login, password, lastAuthorizeDate, email, phone) { + override val role: String = "администратор" +} diff --git a/src/main/kotlin/model/DefaultUser.kt b/src/main/kotlin/model/DefaultUser.kt new file mode 100644 index 0000000..411174f --- /dev/null +++ b/src/main/kotlin/model/DefaultUser.kt @@ -0,0 +1,14 @@ +package model + +import java.time.LocalDate + +class DefaultUser( + userId: Int, + login: String, + password: String, + lastAuthorizeDate: LocalDate, + email: String, + phone: String +) : User(userId, login, password, lastAuthorizeDate, email, phone) { + override val role: String = "пользователь" +} \ No newline at end of file diff --git a/src/main/kotlin/model/ManagerUser.kt b/src/main/kotlin/model/ManagerUser.kt new file mode 100644 index 0000000..1e1f6fc --- /dev/null +++ b/src/main/kotlin/model/ManagerUser.kt @@ -0,0 +1,14 @@ +package model + +import java.time.LocalDate + +class ManagerUser( + userId: Int, + login: String, + password: String, + lastAuthorizeDate: LocalDate, + email: String, + phone: String +) : User(userId, login, password, lastAuthorizeDate, email, phone) { + override val role: String = "менеджер" +} \ No newline at end of file diff --git a/src/main/kotlin/model/User.kt b/src/main/kotlin/model/User.kt new file mode 100644 index 0000000..9761be8 --- /dev/null +++ b/src/main/kotlin/model/User.kt @@ -0,0 +1,16 @@ +package model + +import java.time.LocalDate + +open class User( + val userId: Int, + val login: String, + var password: String, + var lastAuthorizeDate: LocalDate, + var email: String, + var phone: String +) { open val role: String = "пользователь" } + + + +