public async Task <ClaimsPrincipal> DbUserToClaimsPrincipal(PhpbbUsers user)
        {
            var connection          = _context.GetDbConnection();
            var groupPropertiesTask = connection.QueryFirstOrDefaultAsync(
                @"SELECT g.group_edit_time, g.group_user_upload_size
                    FROM phpbb_groups g
                    JOIN phpbb_users u ON g.group_id = u.group_id
                   WHERE u.user_id = @UserId",
                new { user.UserId }
                );
            var styleTask = connection.QueryFirstOrDefaultAsync <string>(
                @"SELECT style_name 
                    FROM phpbb_styles 
                   WHERE style_id = @UserStyle",
                new { user.UserStyle }
                );
            await Task.WhenAll(styleTask, groupPropertiesTask);

            var groupProperties = await groupPropertiesTask;
            var editTime        = unchecked ((int)groupProperties.group_edit_time);
            var style           = await styleTask;

            var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);

            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.UserId), user.UserId.ToString()));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.Username), user.Username ?? string.Empty));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.UsernameClean), user.UsernameClean ?? string.Empty));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.UserDateFormat), user.UserDateformat ?? string.Empty));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.UserColor), user.UserColour ?? string.Empty));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.PostEditTime), ((editTime == 0 || user.UserEditTime == 0) ? 0 : Math.Min(Math.Abs(editTime), Math.Abs(user.UserEditTime))).ToString()));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.UploadLimit), unchecked ((int)groupProperties.group_user_upload_size).ToString()));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.AllowPM), user.UserAllowPm.ToBool().ToString()));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.Style), style ?? string.Empty));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.JumpToUnread), user.JumpToUnread?.ToString() ?? string.Empty));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.Language), user.UserLang ?? string.Empty));
            identity.AddClaim(new Claim(nameof(AuthenticatedUserExpanded.EmailAddress), user.UserEmail ?? string.Empty));
            return(new ClaimsPrincipal(identity));
        }
 public AuthenticatedUser DbUserToAuthenticatedUserBase(PhpbbUsers dbUser)
 => new()