@@ -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,26 +86,16 @@ 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-
107- class Utils {
108- companion object {
109-
110- }
111- }
98+ class Utils { }
11299```
113100
114101
@@ -159,7 +146,6 @@ fun authenticate(login: String, password: String): CodeExecute {
159146 }
160147
161148 return CodeExecute .OK
162-
163149}
164150```
165151
@@ -180,10 +166,6 @@ fun userValidate(login: String, password: String): Boolean {
180166}
181167```
182168
183- * Метод: TODO ...
184- ``` kotlin
185-
186- ```
187169
188170## Объект: ** АвторизацияПровайдер**
189171
@@ -193,8 +175,8 @@ fun authorize(login: String, password: String, role: String, resourse: String, d
193175 if (! Roles .roleValidate(role)){
194176 return CodeExecute .UNKNOWN_ROLES .statusCode
195177 }
196- if (! dostup( )){
197- return CodeExecute .FORBIDDEN .statusCode
178+ if (! isResourceAccess(login, role, resource )){
179+ return CodeExecute .FORBIDDEN
198180 }
199181 if (ds != null && de != null && vol != null ){
200182 if (dateValidate(ds, de) || volValidate(vol)){
@@ -233,16 +215,13 @@ fun volValidate(vol: String): Boolean {
233215
234216* Метод: Имеет ли пользователь доступ к ресурсу
235217``` kotlin
236- fun dostup (): Boolean {
218+ private fun isResourceAccess (login : String , role : String , resourse : String ): Boolean {
219+ val userId = (dataBase.getUserByLogin(login) as User ).id
237220
221+ return dataBase.getResourses().any {it.userId == userId && it.role.name == role && Utils .isResource(resourse, it.resource)}
238222}
239223```
240224
241- * Метод: TODO ...
242- ``` kotlin
243-
244- ```
245-
246225
247226## Объект: ** Ролей**
248227
@@ -274,7 +253,6 @@ fun getHash(sourse: String): String = MessageDigest.getInstance("MD5").digest(so
274253
275254* Метод: Переводит в строку
276255``` kotlin
277- // TODO
278256fun ByteArray.toStr (): String = MessageDigest .getInstance(" MD5" ).digest(sourse.toByteArray()).joinToString(" " ) { " %02x" .format(it) }
279257```
280258
@@ -284,7 +262,6 @@ fun ByteArray.toStr(): String = MessageDigest.getInstance("MD5").digest(sourse.t
284262* Метод: Парсит строку и возвращает объект Аргументов
285263``` kotlin
286264fun parseArguments (args : Array <String >): Arguments {
287-
288265 val parser = ArgParser (" Authorization project" )
289266
290267 val login by parser.option(ArgType .String , shortName = " login" , description = " Input login" )
@@ -298,7 +275,6 @@ fun parseArguments(args: Array<String>): Arguments {
298275 parser.parse(args)
299276
300277 return Arguments (login, password, role, resourse, ds, de, vol)
301-
302278}
303279```
304280
@@ -396,14 +372,12 @@ fun main(args: Array<String>){
396372 if (arguments.role != null && arguments.resourse != null ){
397373 // Провести авторизацию
398374 exitCode = AuthorizeProvider .authorize(arguments.login, arguments.password, arguments.role, arguments.resourse, arguments.ds, arguments.de, arguments.vol)
399- // TODO ...
400375 }
401376 }
402377
403378 System .exit(exitCode)
404379}
405380
406-
407381```
408382
409383
0 commit comments