Skip to content

Commit 6ec465a

Browse files
committed
Merge branch '2157-define-user-role-models' into 2157-switch-to-token-based-auth
Issue #2157 PR #3004
2 parents 4aa4873 + 547969c commit 6ec465a

File tree

6 files changed

+209
-146
lines changed

6 files changed

+209
-146
lines changed

monkey/monkey_island/Pipfile

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ pydantic = "*"
3434
egg-timer = "*"
3535
pyyaml = "*"
3636
semver = "==2.13.0"
37+
flask-login = "*"
38+
flask-wtf = "*"
3739

3840
[dev-packages]
3941
virtualenv = "==20.16.2" # Pinned to 20.16.2 due to importlib-metadat/flake8 issue

monkey/monkey_island/Pipfile.lock

+169-145
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

monkey/monkey_island/cc/models/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,5 @@
99
from common.types import AgentID
1010
from .agent import Agent
1111
from .terminate_all_agents import TerminateAllAgents
12+
from .user import User
13+
from .role import Role
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from __future__ import annotations
2+
3+
from flask_login import RoleMixin
4+
from mongoengine import Document, StringField
5+
6+
7+
class Role(Document, RoleMixin):
8+
name = StringField(max_length=80, unique=True)
9+
description = StringField(max_length=255)
10+
permissions = StringField(max_length=255)
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from __future__ import annotations
2+
3+
from flask_login import UserMixin
4+
from mongoengine import BooleanField, Document, ListField, ReferenceField, StringField
5+
6+
from .role import Role
7+
8+
9+
class User(Document, UserMixin):
10+
username = StringField(max_length=255, unique=True)
11+
password_hash = StringField()
12+
active = BooleanField(default=True)
13+
fs_uniquifier = StringField(max_length=64, unique=True)
14+
roles = ListField(ReferenceField(Role), default=[])
15+
16+
@staticmethod
17+
def get_by_id(id: str):
18+
return User.objects.get(id)

vulture_allowlist.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from infection_monkey.exploit.zerologon_utils.remote_shell import RemoteShell
2020
from infection_monkey.transport.http import FileServHTTPRequestHandler
2121
from monkey_island.cc.deployment import Deployment
22-
from monkey_island.cc.models import IslandMode, Machine
22+
from monkey_island.cc.models import IslandMode, Machine, Role, User
2323
from monkey_island.cc.repositories import IAgentEventRepository, MongoAgentEventRepository
2424
from monkey_island.cc.repositories.utils.hard_coded_credential_collector_schemas import (
2525
HARD_CODED_CREDENTIAL_COLLECTOR_SCHEMAS,
@@ -148,3 +148,10 @@
148148
HARD_CODED_FINGERPRINTER_MANIFESTS
149149
HARD_CODED_PAYLOADS_MANIFESTS
150150
HARD_CODED_PAYLOADS_SCHEMAS
151+
152+
# Remove after #2157
153+
User.active
154+
User.fs_uniquifier
155+
User.roles
156+
User.get_by_id
157+
Role.permissions

0 commit comments

Comments
 (0)