Skip to content

Commit 9e28027

Browse files
author
Dmitry Aratin
committed
modify plan
1 parent 51035db commit 9e28027

1 file changed

Lines changed: 14 additions & 40 deletions

File tree

PLAN.md

Lines changed: 14 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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
6062
import SourseData.*
61-
62-
class DataBaseProvider(val sourseData: SourseData) {
63-
64-
}
63+
class DataBaseProvider(val sourseData: SourseData) {}
6564
```
6665

6766
* Создать объект **ИсточникДанных**
6867
```kotlin
6968
package SourseData
70-
7169
class 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)
8078
class AuthenticationProvider {
81-
8279
companion object {
8380

8481
}
@@ -89,26 +86,16 @@ class AuthenticationProvider {
8986
```kotlin
9087
import java.time.LocalDate
9188
import java.time.format.DateTimeFormatter
92-
9389
// Для авторизации (user + resourse)
94-
class AuthorizeProvider {
95-
TODO ...
96-
}
90+
class AuthorizeProvider { }
9791
```
9892

99-
100-
10193
* Создать объект **Утилит**
10294
```kotlin
10395
import java.security.MessageDigest
10496
import kotlin.random.Random
10597
import 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
278256
fun 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
286264
fun 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

Comments
 (0)