Skip to content

Commit d5d6ffc

Browse files
authored
Add subdomain parameter for anonymous participant generation (#318)
1 parent c66ec9f commit d5d6ffc

File tree

6 files changed

+18
-7
lines changed

6 files changed

+18
-7
lines changed

src/main/kotlin/dk/cachet/carp/webservices/account/service/AccountService.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ interface AccountService {
4545
expirationSeconds: Long?,
4646
clientId: String,
4747
redirectUri: String?,
48+
subdomain: String?,
4849
): Pair<UsernameAccountIdentity, String>
4950

5051
suspend fun getRedirectUris(): Map<String, List<String>>

src/main/kotlin/dk/cachet/carp/webservices/account/service/impl/AccountServiceImpl.kt

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,19 +146,26 @@ class AccountServiceImpl(
146146
expirationSeconds: Long?,
147147
clientId: String,
148148
redirectUri: String?,
149+
subdomain: String?,
149150
): Pair<UsernameAccountIdentity, String> {
150151
val username = UUID.randomUUID()
151152
val identity = UsernameAccountIdentity(username.toString())
152153
val account = issuerFacade.createAccount(Account.fromAccountIdentity(identity))
154+
val uri = issuerFacade.recoverAccount(
155+
account,
156+
clientId,
157+
redirectUri,
158+
expirationSeconds,
159+
).let {
160+
if (subdomain != null) {
161+
it.replace("://", "://$subdomain.")
162+
}
163+
it
164+
}
153165

154166
return Pair(
155167
identity,
156-
issuerFacade.recoverAccount(
157-
account,
158-
clientId,
159-
redirectUri,
160-
expirationSeconds,
161-
),
168+
uri,
162169
)
163170
}
164171

src/main/kotlin/dk/cachet/carp/webservices/export/command/impl/ExportAnonymousParticipants.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ class ExportAnonymousParticipants(
8383
payload.expirationSeconds,
8484
payload.clientId,
8585
payload.redirectUri,
86+
payload.subdomain,
8687
)
8788
anonymousParticipants.add(createAnonymousParticipant(identity, link))
8889
}

src/main/kotlin/dk/cachet/carp/webservices/study/domain/AnonymousParticipantRequest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ data class AnonymousParticipantRequest(
1515
val redirectUri: String,
1616
@field:NotBlank
1717
val participantRoleName: String,
18+
val subdomain: String?,
1819
)

src/test/kotlin/dk/cachet/carp/webservices/account/service/AccountServiceImplTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ class AccountServiceImplTest {
470470
coEvery { issuerFacade.recoverAccount(account, clientId, redirectUri, expirationSeconds) } returns "foo"
471471
val sut = AccountServiceImpl(issuerFacade)
472472

473-
val result = sut.generateAnonymousAccount(expirationSeconds, clientId, redirectUri)
473+
val result = sut.generateAnonymousAccount(expirationSeconds, clientId, redirectUri, null)
474474

475475
coVerify(exactly = 1) { issuerFacade.createAccount(any()) }
476476
assertTrue { result.first.username.toString().length == UUID.randomUUID().stringRepresentation.length }

src/test/kotlin/dk/cachet/carp/webservices/export/command/ExportAnonymousParticipantsTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class ExportAnonymousParticipantsTest {
2929
clientId = "id",
3030
redirectUri = "uri",
3131
participantRoleName = "role",
32+
subdomain = null,
3233
)
3334

3435
@Nested

0 commit comments

Comments
 (0)