Skip to content

Commit fb4f814

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

1 file changed

Lines changed: 13 additions & 35 deletions

File tree

PLAN.md

Lines changed: 13 additions & 35 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,21 +86,15 @@ 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-
10798
class 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
278260
fun 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
286268
fun 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

Comments
 (0)