-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathconfig.neon
More file actions
537 lines (478 loc) · 22.1 KB
/
config.neon
File metadata and controls
537 lines (478 loc) · 22.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
#
# WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
# https://nette.org/security-warning
#
parameters:
php:
mbstring.substitute_character: ?
jobConfig:
storageDir: %appDir%/../job_config
fileStorage: # where the local files are being stored
local:
root: %appDir%/../storage/local
hash:
root: %appDir%/../storage/hash
prefixLength: 2 # splitting hash files into 256 subdirectories by prefix should be enough
api:
address: "https://your.recodex.domain/api"
name: "ReCodEx API"
description: "ReCodEx Code Examiner - API Server"
versionFormat: "{tag}"
async:
pollingInterval: 60 # seconds (you may set this to larger values if inotify wake-ups are allowed)
retries: 3 # how many times each async job is retried when failing
# inotify can wake the async worker (immediately once an async operation is issued)
inotify: false # set to true only if your system (and PHP) supports inotify (not available on Windows, extension required on Linux)
inotifyFile: %tempDir%/async-inotify-file # file used as inotify rod for triggering async worker on dispatch
restartWorkerAfter: # memory leak precaution - worker is restarted once in a while
time: 86400 # after given amount of seconds
jobs: 42 # or after certain amount of jobs processed (whatever comes first)
upkeep: # removes old jobs from DB and checks no jobs are stuck
period: "30 minutes"
cleanupThreshold: "1 hour"
cleanupFailedThreshold: "1 month"
stuckThreshold: "30 minutes"
emails: # where notifications are sent
from: %emails.from%
to: %emails.defaultAdminTo%
webapp:
address: "https://your.recodex.domain"
submissions:
locked: false # if set to true, the API will not be accepting submissions (and it will be indicated in can-submit/permission hints)
lockedReason: # Localized message with reason displayed in UI, why the submissions are locked (ignored if locked == false)
cs: "Odevzdávání řešení bylo zablokováno v konfiguraci aplikace."
en: "Submitting new solutions is currently locked out in the application configuration."
accessManager: # configuration of access token in JWT standard. Do not modify unless you really know what are you doing.
leeway: 60
issuer: "%webapp.address%"
audience: "%webapp.address%"
expiration: 86400 # of regular auth tokens (seconds)
invitationExpiration: 86400 # of an invitation token (seconds)
usedAlgorithm: HS256
tokenCookieName: 'recodex_accessToken' # web-app config value 'PERSISTENT_TOKENS_KEY_PREFIX' + '_accessToken', null if only Authorization header is used
broker: # connection to broker
address: "tcp://127.0.0.1:9658"
auth: # username and password for broker callback authentication back to API
username: "re"
password: "codex"
timeouts:
ack: 100 # ack timeout for first response that broker receives the message
send: 5000 # send timeout how long try to send new job to the broker
result: 1000 # result timeout how long to wait for confirmation if job can be processed or not
monitor: # connection to monitor
address: "wss://your.recodex.domain:443/ws" # URI of monitor
workerFiles: # configuration for worker-files endpoint (direct access from worker to the core to upload/download files)
enabled: true
auth: # username and password that must workers use in base HTTP auth
username: "re"
password: "codex"
removalThreshold: "1 day"
localRegistration:
enabled: false # for security reasons, simple registration is disabled by default
implicitGroupsIds: {} # list of group IDs to which each newly registered user is added as a member
uploads:
removalThreshold: "1 day"
maxPreviewSize: 65536
externalAuthenticators: []
sis:
apiBase: https://sis.university.tld/is/
faculty: FACULTY
secret: SECRET_TOKEN
emails: # common configuration for sending email (addresses and template variables)
apiUrl: %api.address% # base URL of API server including port (for referencing pictures in messages)
footerUrl: %webapp.address% # link in the message footer
siteName: "ReCodEx" # name of frontend (ReCodEx, or KSP for unique instance for KSP course)
githubUrl: https://github.com/ReCodEx # URL to GitHub repository of this project
from: "ReCodEx <noreply@your.recodex.domain>" # sending email address
subjectPrefix: "ReCodEx - "
debugMode: false # in debug mode, no messages are sent via SMTP
archivingDir: "" # a directory where copies of all emails sent are stored (in text files)
defaultAdminTo: "Administrator <admin@your.recodex.domain>" # admin mail address
failures: # admin messages on errors
emails: # additional info for sending mails
to: %emails.defaultAdminTo% # admin mail address
from: %emails.from% # source address
linkTemplates:
assignmentUrl: "%webapp.address%/app/assignment/{id}"
exerciseUrl: "%webapp.address%/app/exercises/{id}"
shadowAssignmentUrl: "%webapp.address%/app/shadow-assignment/{id}"
solutionUrl: "%webapp.address%/app/assignment/{assignmentId}/solution/{solutionId}"
referenceSolutionUrl: "%webapp.address%/app/exercises/{exerciseId}/reference-solution/{solutionId}"
forgottenPasswordUrl: "%webapp.address%/forgotten-password/change?{token}" # URL of web application where the password can be changed
emailVerificationUrl: "%webapp.address%/email-verification?{token}"
invitationUrl: "%webapp.address%/accept-invitation?{token}"
solutionSourceFilesUrl: "%webapp.address%/app/assignment/{assignmentId}/solution/{solutionId}/sources"
assignmentNotifications:
deadlineThresholdFrom: +1 day
deadlineThresholdTo: +2 days
emails:
from: %emails.from%
exerciseNotifications:
emails:
from: %emails.from%
submissionNotifications:
submissionNotificationThreshold: -5 minutes
emails:
from: %emails.from%
failureResolutionNotifications:
emails:
from: %emails.from%
solutionCommentsNotifications:
emails:
from: %emails.from%
reviewsNotifications:
pendingThreshold: -1 hour
emails:
from: %emails.from%
assignmentCommentsNotifications:
emails:
from: %emails.from%
pointsChangedNotifications:
emails:
from: %emails.from%
solutionFlagChangedNotifications:
emails:
from: %emails.from%
generalStatsNotifications:
period: "1 week"
emails:
from: %emails.from%
to: %emails.defaultAdminTo%
forgottenPassword: # user messages for changing passwords
tokenExpiration: 600 # expiration timeout of temporary token (in seconds), 10 minutes
emails: # additional info for sending mails, from is source address
from: %emails.from%
emailVerification:
tokenExpiration: 600 # 10 minutes
emails:
from: %emails.from%
invitationNotification:
emails:
from: %emails.from%
assignmentRestrictions:
submissionsCountMetaLimit: 100 # maximum value for assignment.submissionCountLimit
maxPointsLimit: 10000 # limit for maximal points (both before first and second deadline)
exercises:
# Restrictions
testCountLimit: 100
exerciseFileCountLimit: 200
exerciseFileSizeLimit: 268435456 # 256 MiB
# Default values for newly created exercises
solutionFilesLimitDefault: 10 # at most 10 files per solution
solutionSizeLimitDefault: 262144 # 256 KiB is the maximal size for all submitted files
anonymization:
anonymizedName: "@anonymized" # String used as replacement for anonymized name a user
deletedEmailSuffix: "@deleted.recodex" # Suffix string appended to an email address of a user, when account is deleted
removeInactiveUsers:
# How long the user has to be inactive to warrant the removal (null = never remove students, 1 month is minimum).
# Please note that the length of the auth. token expiration should be considered (readonly tokens may expire after 1 year).
disableAfter: "2 years"
deleteAfter: null # null = never, if not null, better be > disableAfter
roles: # restrict the cleanup to the following roles
- "student"
extensions: []
application:
errorPresenter: V1:ApiError
mapping:
*: App\*Module\Presenters\*Presenter
session:
autoStart: false
useCookies: 0
mail: # configuration of sending mails
smtp: true # using SMTP server, have to be "true"
host: "your.smtp.domain" # address of the server
port: 587 # sending port (common values are 25, 465, 587)
username: "" # login to the server
password: "" # password to the server
secure: "tls" # security, values are empty for no security, "ssl" or "tls"
context: # additional parameters, depending on used mail engine
ssl: # example self-signed certificates can be allowed as verify_peer and verify_peer_name to false and allow_self_signed to true under ssl key (see example)
verify_peer: false
verify_peer_name: false
allow_self_signed: true
acl:
config: %appDir%/config/permissions.neon
acl:
group: App\Security\ACL\IGroupPermissions
instance: App\Security\ACL\IInstancePermissions
user: App\Security\ACL\IUserPermissions
assignment: App\Security\ACL\IAssignmentPermissions
comment: App\Security\ACL\ICommentPermissions
exercise: App\Security\ACL\IExercisePermissions
referenceExerciseSolution: App\Security\ACL\IReferenceExerciseSolutionPermissions
hardwareGroup: App\Security\ACL\IHardwareGroupPermissions
runtimeEnvironment: App\Security\ACL\IRuntimeEnvironmentPermissions
submissionFailure: App\Security\ACL\ISubmissionFailurePermissions
assignmentSolution: App\Security\ACL\IAssignmentSolutionPermissions
uploadedFile: App\Security\ACL\IUploadedFilePermissions
uploadedPartialFile: App\Security\ACL\IUploadedPartialFilePermissions
pipeline: App\Security\ACL\IPipelinePermissions
sis: App\Security\ACL\ISisPermissions
email: App\Security\ACL\IEmailPermissions
shadowAssignment: App\Security\ACL\IShadowAssignmentPermissions
notification: App\Security\ACL\INotificationPermissions
broker: App\Security\ACL\IBrokerPermissions
asyncJob: App\Security\ACL\IAsyncJobPermissions
plagiarism: App\Security\ACL\IPlagiarismPermissions
policies:
_: App\Security\Policies\BasePermissionPolicy
group: App\Security\Policies\GroupPermissionPolicy
instance: App\Security\Policies\InstancePermissionPolicy
user: App\Security\Policies\UserPermissionPolicy
assignment: App\Security\Policies\AssignmentPermissionPolicy
comment: App\Security\Policies\CommentPermissionPolicy
thread: App\Security\Policies\CommentThreadPermissionPolicy
exercise: App\Security\Policies\ExercisePermissionPolicy
referenceExerciseSolution: App\Security\Policies\ReferenceExerciseSolutionPermissionPolicy
assignmentSolution: App\Security\Policies\AssignmentSolutionPermissionPolicy
uploadedFile: App\Security\Policies\UploadedFilePermissionPolicy
uploadedPartialFile: App\Security\Policies\UploadedPartialFilePermissionPolicy
pipeline: App\Security\Policies\PipelinePermissionPolicy
sis: App\Security\Policies\SisPermissionPolicy
course: App\Security\Policies\SisCoursePermissionPolicy
groupContext: App\Security\Policies\SisGroupContextPermissionPolicy
sisBoundGroup: App\Security\Policies\SisBoundGroupPermissionPolicy
shadowAssignment: App\Security\Policies\ShadowAssignmentPermissionPolicy
notification: App\Security\Policies\NotificationPermissionPolicy
asyncJob: App\Security\Policies\AsyncJobPermissionPolicy
reviewComment: App\Security\Policies\ReviewCommentPermissionPolicy
extensions:
console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)
nettrine.annotations: Nettrine\Annotations\DI\AnnotationsExtension
nettrine.cache: Nettrine\Cache\DI\CacheExtension
nettrine.dbal: Nettrine\DBAL\DI\DbalExtension
nettrine.dbal.console: Nettrine\DBAL\DI\DbalConsoleExtension
nettrine.orm: Nettrine\ORM\DI\OrmExtension
nettrine.orm.cache: Nettrine\ORM\DI\OrmCacheExtension
nettrine.orm.console: Nettrine\ORM\DI\OrmConsoleExtension(%consoleMode%)
nettrine.orm.annotations: Nettrine\ORM\DI\OrmAnnotationsExtension
nettrine.migrations: Nettrine\Migrations\DI\MigrationsExtension
nettrine.extensions.atlantic18: Nettrine\Extensions\Atlantic18\DI\Atlantic18BehaviorExtension
fixtures: Zenify\DoctrineFixtures\DI\FixturesExtension
acl: App\Security\SecurityExtension(%tempDir%)
groupBindings: App\Helpers\GroupBindings\GroupBindingsExtension
services:
http.requestFactory: App\RequestFactory
router: App\RouterFactory::createRouter
security.passwords: Nette\Security\Passwords(::PASSWORD_BCRYPT, [cost: 12])
# async
- App\Async\Handler\PingAsyncJobHandler
- App\Async\Handler\ResubmitAllAsyncJobHandler
- App\Async\Handler\AssignmentNotificationJobHandler
- App\Async\Worker(%async%)
- App\Async\Dispatcher(%async%, [
@App\Async\Handler\PingAsyncJobHandler,
@App\Async\Handler\ResubmitAllAsyncJobHandler,
@App\Async\Handler\AssignmentNotificationJobHandler,
])
# commands
- App\Console\DoctrineFixtures
- App\Console\CleanupUploads
- App\Console\CleanupExercisesFiles
- App\Console\CleanupWorkerTmpFiles
- App\Console\SendAssignmentDeadlineNotification(%assignmentNotifications.deadlineThresholdFrom%, %assignmentNotifications.deadlineThresholdTo%)
- App\Console\SendPendingReviewsNotification(%reviewsNotifications.pendingThreshold%)
- App\Console\ConvertExerciseAttachments(%api.address%)
- App\Console\GeneralStatsNotification
- App\Console\ExportDatabase
- App\Console\MetaConverter
- App\Console\SwaggerGenerator
- App\Console\SwaggerAnnotator
- App\Console\CleanupLocalizedTexts
- App\Console\CleanupExerciseConfigs
- App\Console\CleanupPipelineConfigs
- App\Console\RemoveInactiveUsers(%removeInactiveUsers%)
- App\Console\RuntimeExport
- App\Console\RuntimeImport
- App\Console\FixExerciseConfigs
- App\Console\FixConfigVariables
- App\Console\PlagiarismDetectionAccessToken
- App\Console\ListExamEvents
- App\Console\ListSecurityEvents
# security
- App\Security\AccessManager(%accessManager%)
security.userStorage: App\Security\UserStorage
- App\Security\CredentialsAuthenticator
# external login services
- App\Helpers\ExternalLogin\ExternalServiceAuthenticator(%externalAuthenticators%)
# config objects
- App\Helpers\ApiConfig(%api%)
- App\Helpers\AssignmentRestrictionsConfig(%assignmentRestrictions%)
- App\Helpers\BrokerConfig(%broker%)
- App\Helpers\WorkerFilesConfig(%workerFiles%)
- App\Helpers\EmailsConfig(%emails%)
- App\Helpers\ExercisesConfig(%exercises%)
- App\Helpers\MonitorConfig(%monitor%)
- App\Helpers\RegistrationConfig(%localRegistration%)
- App\Helpers\UploadsConfig(%uploads%)
# helpers
- App\Helpers\EvaluationLoadingHelper
- App\Helpers\FailureHelper(@Doctrine\ORM\EntityManagerInterface, @App\Helpers\EmailHelper, %failures%)
- App\Helpers\BrokerProxy(%broker%)
- App\Helpers\BackendSubmitHelper
- App\Helpers\SubmissionHelper
- App\Helpers\SubmissionConfigHelper(%submissions%)
- App\Helpers\EvaluationLoader
- App\Helpers\EvaluationPointsLoader
- App\Helpers\JobConfig\Loader
- App\Helpers\JobConfig\Generator
- App\Helpers\Evaluation\UniformScoreCalculator
- App\Helpers\Evaluation\WeightedScoreCalculator
- App\Helpers\Evaluation\UniversalScoreCalculator
- App\Helpers\Evaluation\ScoreCalculatorAccessor([
@App\Helpers\Evaluation\UniformScoreCalculator,
@App\Helpers\Evaluation\WeightedScoreCalculator,
@App\Helpers\Evaluation\UniversalScoreCalculator
])
- App\Helpers\ExerciseConfig\Loader
- App\Helpers\ExerciseConfig\Transformer
- App\Helpers\ExerciseConfig\Compiler
- App\Helpers\ExerciseConfig\Updater
- App\Helpers\ExerciseConfig\Validator
- App\Helpers\ExerciseConfig\Pipeline\Box\BoxService
- App\Helpers\ExerciseConfig\Validation\ExerciseConfigValidator
- App\Helpers\ExerciseConfig\Validation\PipelineValidator
- App\Helpers\ExerciseConfig\Validation\ExerciseLimitsValidator
- App\Helpers\ExerciseConfig\Validation\EnvironmentConfigValidator
- App\Helpers\ExerciseConfig\Compilation\BaseCompiler
- App\Helpers\ExerciseConfig\Compilation\PipelinesMerger
- App\Helpers\ExerciseConfig\Compilation\BoxesSorter
- App\Helpers\ExerciseConfig\Compilation\BoxesOptimizer
- App\Helpers\ExerciseConfig\Compilation\BoxesCompiler
- App\Helpers\ExerciseConfig\Compilation\VariablesResolver
- App\Helpers\ExerciseConfig\Compilation\DirectoriesResolver
- App\Helpers\ExerciseConfig\Helper
- App\Helpers\ExerciseConfig\PipelinesCache
- App\Helpers\Extensions(%extensions%)
- App\Helpers\SisHelper(%sis.apiBase%, %sis.faculty%, %sis.secret%)
- App\Helpers\UserActions
- App\Helpers\ExerciseConfig\ExerciseConfigChecker
- App\Helpers\AnonymizationHelper(@App\Model\Repository\Users, @App\Model\Repository\Logins, @App\Model\Repository\ExternalLogins, %anonymization%)
- App\Helpers\GeneralStatsHelper(%removeInactiveUsers.disableAfter%)
- App\Helpers\TmpFilesHelper(%tempDir%)
- App\Helpers\FileStorage\LocalFileStorage(@App\Helpers\TmpFilesHelper, %fileStorage.local%)
- App\Helpers\FileStorage\LocalHashFileStorage(%fileStorage.hash%)
- App\Helpers\FileStorageManager(@App\Helpers\FileStorage\LocalFileStorage, @App\Helpers\FileStorage\LocalHashFileStorage, @App\Helpers\TmpFilesHelper, %api.address%)
- App\Helpers\WebappLinks(%webapp.address%, %linkTemplates%)
# emails
- App\Helpers\Emails\EmailLocalizationHelper
- App\Helpers\EmailHelper(%emails%)
- App\Helpers\EmailVerificationHelper(%emailVerification%)
- App\Helpers\ForgottenPasswordHelper(%forgottenPassword%)
- App\Helpers\InvitationHelper(%invitationNotification%)
- App\Helpers\Notifications\AssignmentEmailsSender(%assignmentNotifications%)
- App\Helpers\Notifications\ExerciseNotificationSender(%exerciseNotifications%)
- App\Helpers\Notifications\FailureResolutionEmailsSender(%failureResolutionNotifications%)
- App\Helpers\Notifications\SolutionCommentsEmailsSender(%solutionCommentsNotifications%)
- App\Helpers\Notifications\ReviewsEmailsSender(%reviewsNotifications%)
- App\Helpers\Notifications\AssignmentCommentsEmailsSender(%assignmentCommentsNotifications%)
- App\Helpers\Notifications\SubmissionEmailsSender(%submissionNotifications%)
- App\Helpers\Notifications\GeneralStatsEmailsSender(%generalStatsNotifications%)
- App\Helpers\Notifications\AsyncJobsStuckEmailsSender(%async.upkeep.emails%)
- App\Helpers\Notifications\PointsChangedEmailsSender(%pointsChangedNotifications%)
- App\Helpers\Notifications\SolutionFlagChangedEmailSender(%solutionFlagChangedNotifications%)
# models - repositories
- App\Model\Repository\Assignments
- App\Model\Repository\AssignmentSolutions
- App\Model\Repository\AssignmentSolutionSubmissions
- App\Model\Repository\AssignmentSolvers
- App\Model\Repository\AsyncJobs
- App\Model\Repository\AttachmentFiles
- App\Model\Repository\Comments
- App\Model\Repository\Exercises
- App\Model\Repository\ExerciseConfigs
- App\Model\Repository\ExerciseFileLinks
- App\Model\Repository\ExerciseFiles
- App\Model\Repository\ExerciseTags
- App\Model\Repository\ExerciseTests
- App\Model\Repository\ExternalLogins
- App\Model\Repository\Groups
- App\Model\Repository\GroupExternalAttributes
- App\Model\Repository\GroupExams
- App\Model\Repository\GroupExamLocks
- App\Model\Repository\GroupInvitations
- App\Model\Repository\GroupMemberships
- App\Model\Repository\HardwareGroups
- App\Model\Repository\Instances
- App\Model\Repository\Licences
- App\Model\Repository\Logins
- App\Model\Repository\Notifications
- App\Model\Repository\PlagiarismDetectionBatches
- App\Model\Repository\PlagiarismDetectedSimilarities
- App\Model\Repository\PlagiarismDetectedSimilarFiles
- App\Model\Repository\ReferenceExerciseSolutions
- App\Model\Repository\ReferenceSolutionSubmissions
- App\Model\Repository\ReviewComments
- App\Model\Repository\RuntimeEnvironments
- App\Model\Repository\SubmissionFailures
- App\Model\Repository\SolutionEvaluations
- App\Model\Repository\Solutions
- App\Model\Repository\UploadedFiles
- App\Model\Repository\UploadedPartialFiles
- App\Model\Repository\Users
- App\Model\Repository\UserCalendars
- App\Model\Repository\Pipelines
- App\Model\Repository\SecurityEvents
- App\Model\Repository\SisGroupBindings
- App\Model\Repository\SisValidTerms
- App\Model\Repository\ShadowAssignments
- App\Model\Repository\ShadowAssignmentPointsRepository
# views factories
- App\Model\View\ExerciseViewFactory
- App\Model\View\GroupViewFactory
- App\Model\View\UserViewFactory
- App\Model\View\AssignmentViewFactory
- App\Model\View\AssignmentSolutionViewFactory
- App\Model\View\AssignmentSolutionSubmissionViewFactory
- App\Model\View\ReferenceExerciseSolutionViewFactory
- App\Model\View\ShadowAssignmentViewFactory
- App\Model\View\PipelineViewFactory
- App\Model\View\InstanceViewFactory
- App\Model\View\SolutionFilesViewFactory
- App\Model\View\PlagiarismViewFactory
nettrine.dbal:
debug:
panel: false
sourcePaths: [%appDir%]
connection:
driver: pdo_mysql
host: localhost
dbname: 'recodex-api'
user: 'root'
password: ''
charset: utf8mb4
types:
bit: Doctrine\DBAL\Types\BooleanType
datetime: DoctrineExtensions\DBAL\Types\UTCDateTimeType
uuid: Ramsey\Uuid\Doctrine\UuidType
defaultTableOptions:
charset: utf8mb4
collate: utf8mb4_unicode_ci
nettrine.orm:
configuration:
autoGenerateProxyClasses: true
customStringFunctions:
coalesce_sub: DoctrineExtensions\Query\Functions\CoalesceSubselectsFunction
type: DoctrineExtensions\Query\Functions\TypeFunction
nettrine.orm.annotations:
mapping:
App\Model\Entity: %appDir%/model/entity
nettrine.annotations:
ignore:
- LoggedIn
- POST
- GET
- PUT
- DELETE
nettrine.extensions.atlantic18:
softDeleteable: true
nettrine.migrations:
table: doctrine_migrations # database table for applied migrations
column: version # database column for applied migrations
directories:
Migrations: %appDir%/../migrations # directory, where all migrations are stored
fixtures:
locale: "en_US"
seed: 1
console:
name: ReCodEx Core API