Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Guardians of the Kretschmar Elock System
Doorcode
Commits
d2edd3c2
Commit
d2edd3c2
authored
May 18, 2020
by
Jacob Priddy
👌
Browse files
Fix tests for new door authorizer
parent
6abd38ce
Changes
31
Hide whitespace changes
Inline
Side-by-side
src/web/backend/app/Http/Controllers/DoorController.php
View file @
d2edd3c2
...
...
@@ -56,7 +56,7 @@ class DoorController extends ApiController
*/
public
function
access
(
string
$doorcode
,
AccessUseCase
$access
):
JsonResponse
{
$access
->
protectUserDoorAccess
(
$this
->
doorGuard
->
id
(),
$doorcode
);
$access
->
protectUserDoorAccess
AtTime
(
$this
->
doorGuard
->
id
(),
$doorcode
,
Carbon
::
now
()
);
return
$this
->
respondStatus
();
}
...
...
src/web/backend/app/Providers/AppServiceProvider.php
View file @
d2edd3c2
...
...
@@ -32,7 +32,6 @@ use Source\Gateways\DoorSchedule\DoorScheduleRepositoryServiceProvider;
use
Source\UseCases\Doors\GetAllDoors\GetAllDoorsUseCaseServiceProvider
;
use
Source\UseCases\Users\GetAllUsers\GetAllUsersUseCaseServiceProvider
;
use
Source\Gateways\RecurrenceSet\RecurrenceSetRepositoryServiceProvider
;
use
Source\UseCases\DoorUserGroup\DoorUserGroupMapUseCaseServiceProvider
;
use
Source\UseCases\Groups\CreateGroup\CreateGroupUseCaseServiceProvider
;
use
Source\UseCases\Groups\DeleteGroup\DeleteGroupUseCaseServiceProvider
;
use
Source\UseCases\Groups\UpdateGroup\UpdateGroupUseCaseServiceProvider
;
...
...
@@ -171,9 +170,6 @@ class AppServiceProvider extends ServiceProvider
SchedulesForGroupUseCaseServiceProvider
::
class
,
ActiveSchedulesForGroupUseCaseServiceProvider
::
class
,
// DoorUser
DoorUserGroupMapUseCaseServiceProvider
::
class
,
// Overrides
OverrideGetUseCaseServiceProvider
::
class
,
OverrideCreateUseCaseServiceProvider
::
class
,
...
...
src/web/backend/src/Authorization/Authorizer.php
View file @
d2edd3c2
...
...
@@ -5,6 +5,11 @@ namespace Source\Authorization;
interface
Authorizer
{
/**
* @param string|null $id
*/
public
function
setCurrentUserId
(
?string
$id
):
void
;
/**
* Returns list of permission from \Source\Authorization\Permissions that the user has
*
...
...
src/web/backend/src/UseCases/Door/Access/Access.php
View file @
d2edd3c2
...
...
@@ -126,7 +126,7 @@ class Access implements AccessUseCase
* These authorizers are injected in the service provider, and we will go until allowed or denied
*/
if
(
!
$doorId
)
{
if
(
$doorId
===
null
)
{
throw
new
AuthenticationException
();
}
...
...
src/web/backend/src/UseCases/Door/Access/AccessAuthorizer.php
View file @
d2edd3c2
...
...
@@ -3,7 +3,6 @@
namespace
Source\UseCases\Door\Access
;
use
Carbon\Carbon
;
use
Source\Entities\User
;
...
...
src/web/backend/src/UseCases/Door/Access/AccessUseCaseServiceProvider.php
View file @
d2edd3c2
...
...
@@ -10,8 +10,8 @@ use Illuminate\Contracts\Foundation\Application;
use
Source\Gateways\Attempts\AttemptsRepository
;
use
Illuminate\Contracts\Support\DeferrableProvider
;
use
Source\UseCases\Door\Access\Authorizers\CommandAuthorizer
;
use
Source\UseCases\Door\Access\Authorizers\OverrideAuthorizer
;
use
Source\UseCases\Door\Access\Authorizers\OpenModeAuthorizer
;
use
Source\UseCases\Door\Access\Authorizers\OverrideAuthorizer
;
use
Source\UseCases\Door\Access\Authorizers\ScheduleAuthorizer
;
use
Source\UseCases\Door\Access\Authorizers\CommanderAuthorizer
;
...
...
src/web/backend/src/UseCases/Door/Access/Authorizers/CommandAuthorizer.php
View file @
d2edd3c2
...
...
@@ -3,11 +3,10 @@
namespace
Source\UseCases\Door\Access\Authorizers
;
use
Carbon\Carbon
;
use
Source\Entities\User
;
use
Source\Authorization\Authorizer
;
use
Source\Authorization\Permissions
;
use
Source\Authorization\ApiAuthorizer
;
use
Source\Exceptions\EntityNotFoundException
;
use
Source\UseCases\Door\Access\AccessAuthorizer
;
use
Source\UseCases\Door\Commands\CommandHandler
;
...
...
@@ -15,16 +14,16 @@ use Source\UseCases\Door\Commands\CommandHandler;
class
CommandAuthorizer
implements
AccessAuthorizer
{
/**
* @var \Source\Authorization\
Api
Authorizer
* @var \Source\Authorization\Authorizer
*/
protected
Api
Authorizer
$authorizer
;
protected
Authorizer
$authorizer
;
/**
* @var \Source\UseCases\Door\Commands\CommandHandler
*/
protected
CommandHandler
$commandHandler
;
public
function
__construct
(
Api
Authorizer
$authorizer
,
CommandHandler
$commandHandler
)
public
function
__construct
(
Authorizer
$authorizer
,
CommandHandler
$commandHandler
)
{
$this
->
authorizer
=
$authorizer
;
$this
->
commandHandler
=
$commandHandler
;
...
...
src/web/backend/src/UseCases/Door/Access/Authorizers/CommanderAuthorizer.php
View file @
d2edd3c2
...
...
@@ -3,22 +3,21 @@
namespace
Source\UseCases\Door\Access\Authorizers
;
use
Carbon\Carbon
;
use
Source\Entities\User
;
use
Source\Authorization\Authorizer
;
use
Source\Authorization\Permissions
;
use
Source\Authorization\ApiAuthorizer
;
use
Source\Exceptions\EntityNotFoundException
;
use
Source\UseCases\Door\Access\AccessAuthorizer
;
class
CommanderAuthorizer
implements
AccessAuthorizer
{
/**
* @var \Source\Authorization\
Api
Authorizer
* @var \Source\Authorization\Authorizer
*/
protected
Api
Authorizer
$authorizer
;
protected
Authorizer
$authorizer
;
public
function
__construct
(
Api
Authorizer
$authorizer
)
public
function
__construct
(
Authorizer
$authorizer
)
{
$this
->
authorizer
=
$authorizer
;
}
...
...
src/web/backend/src/UseCases/Door/Access/Authorizers/OpenModeAuthorizer.php
View file @
d2edd3c2
...
...
@@ -3,11 +3,10 @@
namespace
Source\UseCases\Door\Access\Authorizers
;
use
Carbon\Carbon
;
use
Source\Entities\User
;
use
Source\Entities\Schedule
;
use
InvalidArgumentException
;
use
Source\Entities\Schedule
;
use
Source\UseCases\Door\Access\AccessAuthorizer
;
use
Source\Gateways\DoorSchedule\DoorScheduleRepository
;
use
Source\Gateways\RecurrenceSet\RecurrenceSetRepository
;
...
...
src/web/backend/src/UseCases/Door/Access/Authorizers/OverrideAuthorizer.php
View file @
d2edd3c2
...
...
@@ -3,7 +3,6 @@
namespace
Source\UseCases\Door\Access\Authorizers
;
use
Carbon\Carbon
;
use
Source\Entities\User
;
use
Source\Entities\Override
;
...
...
src/web/backend/src/UseCases/Door/Access/Authorizers/ScheduleAuthorizer.php
View file @
d2edd3c2
...
...
@@ -3,15 +3,14 @@
namespace
Source\UseCases\Door\Access\Authorizers
;
use
Carbon\Carbon
;
use
Source\Entities\User
;
use
Source\Entities\Schedule
;
use
InvalidArgumentException
;
use
Source\Entities\Schedule
;
use
Source\Gateways\DoorUser\DoorUserRepository
;
use
Source\UseCases\Door\Access\AccessAuthorizer
;
use
Source\Gateways\Schedules\SchedulesRepository
;
use
Source\Gateways\RecurrenceSet\RecurrenceSetRepository
;
use
Source\UseCases\DoorUserGroup\DoorUserGroupMapUseCase
;
class
ScheduleAuthorizer
implements
AccessAuthorizer
{
...
...
@@ -26,18 +25,18 @@ class ScheduleAuthorizer implements AccessAuthorizer
protected
RecurrenceSetRepository
$recurrenceSet
;
/**
* @var \Source\
UseCase
s\DoorUser
Group
\DoorUser
GroupMapUseCase
* @var \Source\
Gateway
s\DoorUser\DoorUser
Repository
*/
protected
DoorUser
GroupMapUseCase
$doorUser
Mapper
;
protected
DoorUser
Repository
$doorUser
s
;
public
function
__construct
(
SchedulesRepository
$schedules
,
RecurrenceSetRepository
$recurrenceSet
,
DoorUser
GroupMapUseCase
$doorUser
Mapper
DoorUser
Repository
$doorUser
s
)
{
$this
->
schedules
=
$schedules
;
$this
->
recurrenceSet
=
$recurrenceSet
;
$this
->
doorUser
Mapper
=
$doorUser
Mapper
;
$this
->
doorUser
s
=
$doorUser
s
;
}
/**
...
...
@@ -46,7 +45,7 @@ class ScheduleAuthorizer implements AccessAuthorizer
public
function
check
(
?User
$user
,
Carbon
$date
,
string
$doorId
,
string
$doorcode
,
?string
$commandString
):
int
{
if
(
$user
)
{
$groups
=
$this
->
doorUser
Mapper
->
getGroupsFor
DoorUserIntersection
(
$doorId
,
$user
->
getId
());
$groups
=
$this
->
doorUser
s
->
get
DoorUser
Group
Intersection
(
$doorId
,
$user
->
getId
());
foreach
(
$groups
as
$group
)
{
$schedules
=
$this
->
schedules
->
getActiveForGroupAndDate
(
$group
->
getId
(),
...
...
src/web/backend/src/UseCases/Door/Commands/Command.php
View file @
d2edd3c2
...
...
@@ -3,7 +3,6 @@
namespace
Source\UseCases\Door\Commands
;
use
Source\Entities\User
;
abstract
class
Command
...
...
src/web/backend/src/UseCases/Door/Commands/CommandHandler.php
View file @
d2edd3c2
...
...
@@ -3,7 +3,6 @@
namespace
Source\UseCases\Door\Commands
;
use
Source\Entities\User
;
interface
CommandHandler
...
...
src/web/backend/src/UseCases/Door/Commands/CommandServiceProvider.php
View file @
d2edd3c2
...
...
@@ -3,7 +3,6 @@
namespace
Source\UseCases\Door\Commands
;
use
Carbon\Laravel\ServiceProvider
;
use
Illuminate\Contracts\Foundation\Application
;
use
Illuminate\Contracts\Support\DeferrableProvider
;
...
...
src/web/backend/src/UseCases/Door/Commands/DoorCommandHandler.php
View file @
d2edd3c2
...
...
@@ -3,7 +3,6 @@
namespace
Source\UseCases\Door\Commands
;
use
Source\Entities\User
;
class
DoorCommandHandler
implements
CommandHandler
...
...
src/web/backend/src/UseCases/Door/Commands/OverrideCommand.php
View file @
d2edd3c2
...
...
@@ -3,7 +3,6 @@
namespace
Source\UseCases\Door\Commands
;
use
Carbon\Carbon
;
use
Source\Entities\User
;
use
Source\Entities\Override
;
...
...
@@ -55,14 +54,14 @@ class OverrideCommand extends Command
if
(
$length
>
0
)
{
return
$this
->
overrides
->
addOverride
(
new
Override
(
0
,
"Open mode override created at keypad by
{
$user
->
getDisplayName
()
}
."
,
$user
->
getId
(),
$doorId
,
Override
::
TYPE_OPEN
,
Carbon
::
now
(),
Carbon
::
now
()
->
addRealMinutes
(
$length
)
))
!==
null
;
0
,
"Open mode override created at keypad by
{
$user
->
getDisplayName
()
}
."
,
$user
->
getId
(),
$doorId
,
Override
::
TYPE_OPEN
,
Carbon
::
now
(),
Carbon
::
now
()
->
addRealMinutes
(
$length
)
))
!==
null
;
}
return
false
;
...
...
@@ -71,8 +70,8 @@ class OverrideCommand extends Command
if
(
$length
>
0
)
{
return
$this
->
overrides
->
addOverride
(
new
Override
(
0
,
"Closed mode override created at keypad by
{
$user
->
getDisplayName
()
}
."
,
0
,
"Closed mode override created at keypad by
{
$user
->
getDisplayName
()
}
."
,
$user
->
getId
(),
$doorId
,
Override
::
TYPE_LOCKED
,
...
...
src/web/backend/src/UseCases/DoorUserGroup/DoorUserGroupMap.php
deleted
100644 → 0
View file @
6abd38ce
<?php
namespace
Source\UseCases\DoorUserGroup
;
use
Source\Gateways\DoorUser\DoorUserRepository
;
class
DoorUserGroupMap
implements
DoorUserGroupMapUseCase
{
/**
* @var \Source\Gateways\DoorUser\DoorUserRepository
*/
protected
DoorUserRepository
$doorUsers
;
public
function
__construct
(
DoorUserRepository
$doorUsers
)
{
$this
->
doorUsers
=
$doorUsers
;
}
/**
* @inheritDoc
*/
public
function
getGroupsForDoorUserIntersection
(
string
$doorId
,
string
$userId
):
array
{
return
$this
->
doorUsers
->
getDoorUserGroupIntersection
(
$doorId
,
$userId
);
}
}
src/web/backend/src/UseCases/DoorUserGroup/DoorUserGroupMapUseCase.php
deleted
100644 → 0
View file @
6abd38ce
<?php
namespace
Source\UseCases\DoorUserGroup
;
interface
DoorUserGroupMapUseCase
{
/**
* Returns groups that a door and a user both belong to
*
* @param string $doorId
* @param string $userId
* @return \Source\Entities\Group[]
*/
public
function
getGroupsForDoorUserIntersection
(
string
$doorId
,
string
$userId
):
array
;
}
src/web/backend/src/UseCases/DoorUserGroup/DoorUserGroupMapUseCaseServiceProvider.php
deleted
100644 → 0
View file @
6abd38ce
<?php
namespace
Source\UseCases\DoorUserGroup
;
use
Illuminate\Support\ServiceProvider
;
use
Illuminate\Contracts\Foundation\Application
;
use
Source\Gateways\DoorUser\DoorUserRepository
;
use
Illuminate\Contracts\Support\DeferrableProvider
;
/**
* Service provider must be registered in AppServiceProvider
*/
class
DoorUserGroupMapUseCaseServiceProvider
extends
ServiceProvider
implements
DeferrableProvider
{
/**
* Register any application services.
*
* @return void
*/
public
function
register
()
{
$this
->
app
->
bind
(
DoorUserGroupMapUseCase
::
class
,
static
function
(
Application
$app
)
{
return
new
DoorUserGroupMap
(
$app
->
make
(
DoorUserRepository
::
class
));
});
}
/**
* Bootstrap any application services.
*
* @return void
*/
public
function
boot
():
void
{
}
/**
* @return array
*/
public
function
provides
()
{
return
[
DoorUserGroupMapUseCase
::
class
];
}
}
src/web/backend/tests/Doubles/Access/DoorOpenModeCheckStub.php
deleted
100644 → 0
View file @
6abd38ce
<?php
namespace
Tests\Doubles\Access
;
use
Carbon\Carbon
;
use
Source\UseCases\Door\Access\Authorizers\DoorOpenModeCheck\DoorOpenModeCheck
;
class
DoorOpenModeCheckStub
implements
DoorOpenModeCheck
{
public
bool
$checkReturn
=
false
;
/**
* @inheritDoc
*/
public
function
checkOpenMode
(
string
$doorId
,
Carbon
$date
):
bool
{
return
$this
->
checkReturn
;
}
}
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment