public async Task <IViewComponentResult> InvokeAsync(int targetUserId, int groupId, int credentialId, CancellationToken cancellationToken)
        {
            var user = await _authService.GetCurrentUser(HttpContext, cancellationToken);

            if (user == null)
            {
                throw new UnauthorizedAccessException("No user in session");
            }

            if (!await _groupMemberService.GetUserHasRole(user.ID, groupId, GroupRoles.UserAdmin, true, cancellationToken))
            {
                throw new UnauthorizedAccessException("User does not have required role.");
            }

            if (!await _groupMemberService.GetUserHasRole(targetUserId, groupId, GroupRoles.Member, false, cancellationToken))
            {
                throw new UnauthorizedAccessException("Target user is not member of group.");
            }

            var viewModel = new AssignCredentialsViewModel()
            {
                TargetUser        = await _userService.GetUserAsync(targetUserId, cancellationToken),
                Credential        = await _groupService.GetGroupCredential(groupId, credentialId),
                ValidUntilOptions = GetValidUntilOptions(),
            };

            return(View("AssignCredentialsPopup", viewModel));
        }
Exemple #2
0
        public async Task <bool> PutVolunteerCredential(string u, string g, string c, [FromBody] AssignCredentialsViewModel assignCredentialsViewModel, CancellationToken cancellationToken)
        {
            int targetUserId = Base64Utils.Base64DecodeToInt(u);
            int groupId      = Base64Utils.Base64DecodeToInt(g);
            int credentialId = Base64Utils.Base64DecodeToInt(c);

            var user = await _authService.GetCurrentUser(HttpContext, cancellationToken);

            DateTime?validUntil = assignCredentialsViewModel.ValidUntil == "Null" ? (DateTime?)null : DateTime.ParseExact(assignCredentialsViewModel.ValidUntil, DatePickerHelpers.DATE_PICKER_DATE_FORMAT, new CultureInfo("en-GB"));

            PutGroupMemberCredentialsRequest putGroupMemberCredentialsRequest = new PutGroupMemberCredentialsRequest()
            {
                AuthorisedByUserID = user.ID,
                UserId             = targetUserId,
                GroupId            = groupId,
                CredentialId       = credentialId,
                Reference          = assignCredentialsViewModel.Reference,
                Notes      = assignCredentialsViewModel.Notes,
                ValidUntil = validUntil,
            };

            return(await _groupMemberService.PutGroupMemberCredentials(putGroupMemberCredentialsRequest));
        }