Skip to content

Commit 2204515

Browse files
committed
Add set user role when setting group via mapping
1 parent 0a3886d commit 2204515

File tree

2 files changed

+29
-17
lines changed

2 files changed

+29
-17
lines changed

backend/src/main/kotlin/hu/bme/sch/cmsch/component/login/LoginService.kt

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@ import hu.bme.sch.cmsch.component.SettingProxy
44
import hu.bme.sch.cmsch.component.login.authsch.ProfileResponse
55
import hu.bme.sch.cmsch.component.login.google.GoogleUserInfoResponse
66
import hu.bme.sch.cmsch.component.login.keycloak.KeycloakUserInfoResponse
7+
import hu.bme.sch.cmsch.component.team.TeamService
78
import hu.bme.sch.cmsch.config.AUTHSCH
89
import hu.bme.sch.cmsch.config.GOOGLE
910
import hu.bme.sch.cmsch.config.KEYCLOAK
1011
import hu.bme.sch.cmsch.config.StartupPropertyConfig
11-
import hu.bme.sch.cmsch.model.GuildType
12-
import hu.bme.sch.cmsch.model.MajorType
13-
import hu.bme.sch.cmsch.model.RoleType
14-
import hu.bme.sch.cmsch.model.UserEntity
12+
import hu.bme.sch.cmsch.model.*
1513
import hu.bme.sch.cmsch.repository.GroupRepository
1614
import hu.bme.sch.cmsch.repository.GroupToUserMappingRepository
1715
import hu.bme.sch.cmsch.repository.GuildToUserMappingRepository
@@ -23,6 +21,7 @@ import hu.bme.sch.cmsch.util.transaction
2321
import org.slf4j.LoggerFactory
2422
import org.springframework.stereotype.Service
2523
import org.springframework.transaction.PlatformTransactionManager
24+
import java.util.*
2625

2726
@Service
2827
open class LoginService(
@@ -36,7 +35,8 @@ open class LoginService(
3635
private val unitScopeComponent: UnitScopeComponent,
3736
private val startupPropertyConfig: StartupPropertyConfig,
3837
private val adminMenuService: AdminMenuService,
39-
private val transactionManager: PlatformTransactionManager
38+
private val transactionManager: PlatformTransactionManager,
39+
private val teamService: Optional<TeamService>
4040
) {
4141

4242
private val log = LoggerFactory.getLogger(javaClass)
@@ -266,8 +266,7 @@ open class LoginService(
266266
if (user.neptun.isNotBlank()) {
267267
groupToUserMapping.findByNeptun(user.neptun).ifPresent {
268268
user.major = it.major
269-
user.groupName = it.groupName
270-
user.group = groups.findByName(it.groupName).orElse(null)
269+
addUserToGroup(user, it)
271270
user.detailsImported = true
272271
alreadySetGroupAndGuild = true
273272
}
@@ -276,13 +275,22 @@ open class LoginService(
276275
if (user.email.isNotBlank() && !alreadySetGroupAndGuild) {
277276
groupToUserMapping.findByEmailIgnoreCase(user.email).ifPresent {
278277
user.major = it.major
279-
user.groupName = it.groupName
280-
user.group = groups.findByName(it.groupName).orElse(null)
278+
addUserToGroup(user, it)
281279
user.detailsImported = true
282280
}
283281
}
284282
}
285283

284+
private fun addUserToGroup(user: UserEntity, groupMapping: GroupToUserMappingEntity) {
285+
val group = groups.findByName(groupMapping.groupName)
286+
if (teamService.isPresent && group.isPresent) {
287+
teamService.get().addUserToGroup(user, group.get())
288+
} else {
289+
user.groupName = groupMapping.groupName
290+
user.group = group.orElse(null)
291+
}
292+
}
293+
286294
private fun processUnitScopeStatus(
287295
user: UserEntity,
288296
grantRoleAttendee: SettingProxy,

backend/src/main/kotlin/hu/bme/sch/cmsch/component/team/TeamService.kt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -381,21 +381,25 @@ open class TeamService(
381381

382382
if (teamJoinRequestRepository.existsByUserIdAndGroupId(userId, group.id)) {
383383
val user = userRepository.findById(userId).orElse(null) ?: return false
384-
user.groupName = group.name
385-
user.group = group
386-
if (teamComponent.grantAttendeeRole.isValueTrue() && user.role.value <= RoleType.ATTENDEE.value) {
387-
log.info("User '{}' accepted for group '{}' (ATTENDEE granted)", user.fullName, group.name)
388-
user.role = RoleType.ATTENDEE
389-
} else {
390-
log.info("User '{}' accepted for group '{}' (ATTENDEE not granted)", user.fullName, group.name)
391-
}
384+
addUserToGroup(user, group)
392385
userRepository.save(user)
393386
teamJoinRequestRepository.deleteAllByUserId(userId)
394387
return true
395388
}
396389
return false
397390
}
398391

392+
fun addUserToGroup(user: UserEntity, group: GroupEntity) {
393+
user.groupName = group.name
394+
user.group = group
395+
if (teamComponent.grantAttendeeRole.isValueTrue() && user.role.value <= RoleType.ATTENDEE.value) {
396+
log.info("User '{}' accepted for group '{}' (ATTENDEE granted)", user.fullName, group.name)
397+
user.role = RoleType.ATTENDEE
398+
} else {
399+
log.info("User '{}' accepted for group '{}' (ATTENDEE not granted)", user.fullName, group.name)
400+
}
401+
}
402+
399403
@Retryable(value = [ SQLException::class ], maxAttempts = 5, backoff = Backoff(delay = 500L, multiplier = 1.5))
400404
@Transactional(readOnly = false, isolation = Isolation.SERIALIZABLE)
401405
open fun rejectJoin(userId: Int, groupId: Int?, groupName: String): Boolean {

0 commit comments

Comments
 (0)