@@ -7,7 +7,6 @@ data class User(
77 val login : String ,
88 val pass : String ,
99 val salt : String ,
10-
1110)
1211```
1312
@@ -23,9 +22,11 @@ enum class Roles() {
2322* Создать объект ** РольРесурс**
2423``` kotlin
2524// {user resourse role}
26- class RoleResourses {
27- TODO .. .
28- }
25+ data class RoleResource (
26+ val role : Roles ,
27+ val resource : String ,
28+ val userId : Int = 0
29+ )
2930```
3031
3132* Создать объект ** Аргумент**
@@ -56,18 +57,15 @@ enum class CodeExecute(val statusCode: Int){
5657```
5758
5859* Создать объект ** БазаДанныхПровайдер**
60+
5961``` kotlin
6062import SourseData.*
61-
62- class DataBaseProvider (val sourseData : SourseData ) {
63-
64- }
63+ class DataBaseProvider (val sourseData : SourseData ) {}
6564```
6665
6766* Создать объект ** ИсточникДанных**
6867``` kotlin
6968package SourseData
70-
7169class SourseData {
7270 public val roleResourses: List <RoleResourses > = listOf (.. .)
7371 public val users: List <User > = listOf (.. .)
@@ -78,7 +76,6 @@ class SourseData {
7876``` kotlin
7977// Для аутентификации (логин + pass)
8078class AuthenticationProvider {
81-
8279 companion object {
8380
8481 }
@@ -89,21 +86,15 @@ class AuthenticationProvider {
8986``` kotlin
9087import java.time.LocalDate
9188import java.time.format.DateTimeFormatter
92-
9389// Для авторизации (user + resourse)
94- class AuthorizeProvider {
95- TODO .. .
96- }
90+ class AuthorizeProvider { }
9791```
9892
99-
100-
10193* Создать объект ** Утилит**
10294``` kotlin
10395import java.security.MessageDigest
10496import kotlin.random.Random
10597import kotlinx.cli.*
106-
10798class Utils {
10899 companion object {
109100
@@ -159,7 +150,6 @@ fun authenticate(login: String, password: String): CodeExecute {
159150 }
160151
161152 return CodeExecute .OK
162-
163153}
164154```
165155
@@ -180,10 +170,6 @@ fun userValidate(login: String, password: String): Boolean {
180170}
181171```
182172
183- * Метод: TODO ...
184- ``` kotlin
185-
186- ```
187173
188174## Объект: ** АвторизацияПровайдер**
189175
@@ -193,8 +179,8 @@ fun authorize(login: String, password: String, role: String, resourse: String, d
193179 if (! Roles .roleValidate(role)){
194180 return CodeExecute .UNKNOWN_ROLES .statusCode
195181 }
196- if (! dostup( )){
197- return CodeExecute .FORBIDDEN .statusCode
182+ if (! isResourceAccess(login, role, resource )){
183+ return CodeExecute .FORBIDDEN
198184 }
199185 if (ds != null && de != null && vol != null ){
200186 if (dateValidate(ds, de) || volValidate(vol)){
@@ -233,16 +219,13 @@ fun volValidate(vol: String): Boolean {
233219
234220* Метод: Имеет ли пользователь доступ к ресурсу
235221``` kotlin
236- fun dostup (): Boolean {
222+ private fun isResourceAccess (login : String , role : String , resourse : String ): Boolean {
223+ val userId = (dataBase.getUserByLogin(login) as User ).id
237224
225+ return dataBase.getResourses().any {it.userId == userId && it.role.name == role && Utils .isResource(resourse, it.resource)}
238226}
239227```
240228
241- * Метод: TODO ...
242- ``` kotlin
243-
244- ```
245-
246229
247230## Объект: ** Ролей**
248231
@@ -274,7 +257,6 @@ fun getHash(sourse: String): String = MessageDigest.getInstance("MD5").digest(so
274257
275258* Метод: Переводит в строку
276259``` kotlin
277- // TODO
278260fun ByteArray.toStr (): String = MessageDigest .getInstance(" MD5" ).digest(sourse.toByteArray()).joinToString(" " ) { " %02x" .format(it) }
279261```
280262
@@ -284,7 +266,6 @@ fun ByteArray.toStr(): String = MessageDigest.getInstance("MD5").digest(sourse.t
284266* Метод: Парсит строку и возвращает объект Аргументов
285267``` kotlin
286268fun parseArguments (args : Array <String >): Arguments {
287-
288269 val parser = ArgParser (" Authorization project" )
289270
290271 val login by parser.option(ArgType .String , shortName = " login" , description = " Input login" )
@@ -298,7 +279,6 @@ fun parseArguments(args: Array<String>): Arguments {
298279 parser.parse(args)
299280
300281 return Arguments (login, password, role, resourse, ds, de, vol)
301-
302282}
303283```
304284
@@ -396,14 +376,12 @@ fun main(args: Array<String>){
396376 if (arguments.role != null && arguments.resourse != null ){
397377 // Провести авторизацию
398378 exitCode = AuthorizeProvider .authorize(arguments.login, arguments.password, arguments.role, arguments.resourse, arguments.ds, arguments.de, arguments.vol)
399- // TODO ...
400379 }
401380 }
402381
403382 System .exit(exitCode)
404383}
405384
406-
407385```
408386
409387
0 commit comments