1
0
mirror of https://github.com/bitwarden/server.git synced 2025-07-01 16:12:49 -05:00

Merge branch 'master' into ac/ac-1682/data-migrations-for-deprecated-permissions

This commit is contained in:
Rui Tomé
2023-12-06 16:08:58 +00:00
committed by GitHub
460 changed files with 18165 additions and 7610 deletions

View File

@ -21,7 +21,7 @@
] ]
}, },
"dotnet-ef": { "dotnet-ef": {
"version": "7.0.8", "version": "7.0.14",
"commands": [ "commands": [
"dotnet-ef" "dotnet-ef"
] ]

13
.github/CODEOWNERS vendored
View File

@ -1,11 +1,9 @@
# Please sort lines alphabetically, this will ensure we don't accidentally add duplicates. # Please sort into logical groups with comment headers. Sort groups in order of specificity.
# For example, default owners should always be the first group.
# Sort lines alphabetically within these groups to avoid accidentally adding duplicates.
# #
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners # https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# The following owners will be the default owners for everything in the repo
# unless a later match takes precedence
* @bitwarden/tech-leads
# DevOps for Actions and other workflow changes # DevOps for Actions and other workflow changes
.github/workflows @bitwarden/dept-devops .github/workflows @bitwarden/dept-devops
@ -45,8 +43,11 @@ bitwarden_license/src/test/Scim.ScimTest @bitwarden/team-admin-console-dev
**/*paypal* @bitwarden/team-billing-dev **/*paypal* @bitwarden/team-billing-dev
**/*stripe* @bitwarden/team-billing-dev **/*stripe* @bitwarden/team-billing-dev
**/*subscription* @bitwarden/team-billing-dev **/*subscription* @bitwarden/team-billing-dev
**/*payment* @bitwarden/team-billing-dev
**/*invoice* @bitwarden/team-billing-dev
**/*OrganizationLicense* @bitwarden/team-billing-dev
**/Billing @bitwarden/team-billing-dev **/Billing @bitwarden/team-billing-dev
# Multiple owners # Multiple owners - DO NOT REMOVE (DevOps)
**/packages.lock.json **/packages.lock.json
Directory.Build.props Directory.Build.props

35
.github/renovate.json vendored
View File

@ -103,6 +103,11 @@
"commitMessagePrefix": "[deps] Billing:", "commitMessagePrefix": "[deps] Billing:",
"reviewers": ["team:team-billing-dev"] "reviewers": ["team:team-billing-dev"]
}, },
{
"matchPackagePatterns": ["^Microsoft.Extensions.Logging"],
"groupName": "Microsoft.Extensions.Logging",
"description": "Group Microsoft.Extensions.Logging to exclude them from the dotnet monorepo preset"
},
{ {
"matchPackageNames": ["CommandDotNet", "dbup-sqlserver", "YamlDotNet"], "matchPackageNames": ["CommandDotNet", "dbup-sqlserver", "YamlDotNet"],
"description": "DevOps owned dependencies", "description": "DevOps owned dependencies",
@ -122,6 +127,7 @@
{ {
"matchPackageNames": [ "matchPackageNames": [
"Dapper", "Dapper",
"dotnet-ef",
"linq2db.EntityFrameworkCore", "linq2db.EntityFrameworkCore",
"Microsoft.EntityFrameworkCore.Design", "Microsoft.EntityFrameworkCore.Design",
"Microsoft.EntityFrameworkCore.InMemory", "Microsoft.EntityFrameworkCore.InMemory",
@ -135,6 +141,11 @@
"commitMessagePrefix": "[deps] SM:", "commitMessagePrefix": "[deps] SM:",
"reviewers": ["team:team-secrets-manager-dev"] "reviewers": ["team:team-secrets-manager-dev"]
}, },
{
"matchPackagePatterns": ["EntityFrameworkCore", "^dotnet-ef"],
"groupName": "EntityFrameworkCore",
"description": "Group EntityFrameworkCore to exclude them from the dotnet monorepo preset"
},
{ {
"matchPackageNames": [ "matchPackageNames": [
"AutoMapper.Extensions.Microsoft.DependencyInjection", "AutoMapper.Extensions.Microsoft.DependencyInjection",
@ -146,17 +157,32 @@
"Microsoft.AspNetCore.SignalR.Protocols.MessagePack", "Microsoft.AspNetCore.SignalR.Protocols.MessagePack",
"Microsoft.AspNetCore.SignalR.StackExchangeRedis", "Microsoft.AspNetCore.SignalR.StackExchangeRedis",
"Microsoft.Azure.NotificationHubs", "Microsoft.Azure.NotificationHubs",
"Microsoft.Extensions.Configuration",
"Microsoft.Extensions.Configuration.EnvironmentVariables", "Microsoft.Extensions.Configuration.EnvironmentVariables",
"Microsoft.Extensions.Configuration.UserSecrets", "Microsoft.Extensions.Configuration.UserSecrets",
"Microsoft.Extensions.DependencyInjection", "Microsoft.Extensions.Configuration",
"Microsoft.Extensions.DependencyInjection.Abstractions", "Microsoft.Extensions.DependencyInjection.Abstractions",
"Microsoft.Extensions.DependencyInjection",
"SendGrid" "SendGrid"
], ],
"description": "Tools owned dependencies", "description": "Tools owned dependencies",
"commitMessagePrefix": "[deps] Tools:", "commitMessagePrefix": "[deps] Tools:",
"reviewers": ["team:team-tools-dev"] "reviewers": ["team:team-tools-dev"]
}, },
{
"matchPackagePatterns": ["^Microsoft.AspNetCore.SignalR"],
"groupName": "SignalR",
"description": "Group SignalR to exclude them from the dotnet monorepo preset"
},
{
"matchPackagePatterns": ["^Microsoft.Extensions.Configuration"],
"groupName": "Microsoft.Extensions.Configuration",
"description": "Group Microsoft.Extensions.Configuration to exclude them from the dotnet monorepo preset"
},
{
"matchPackagePatterns": ["^Microsoft.Extensions.DependencyInjection"],
"groupName": "Microsoft.Extensions.DependencyInjection",
"description": "Group Microsoft.Extensions.DependencyInjection to exclude them from the dotnet monorepo preset"
},
{ {
"matchPackageNames": [ "matchPackageNames": [
"AngleSharp", "AngleSharp",
@ -175,7 +201,8 @@
], ],
"force": { "force": {
"constraints": { "constraints": {
"dotnet": "6.0.413" "dotnet": "6.0.100"
} }
} },
"ignoreDeps": ["dotnet-sdk"]
} }

View File

@ -11,7 +11,7 @@ on:
jobs: jobs:
bump_props_version: bump_props_version:
name: "Create version_bump_${{ github.event.inputs.version_number }} branch" name: "Create version_bump_${{ github.event.inputs.version_number }} branch"
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
steps: steps:
- name: Checkout Branch - name: Checkout Branch
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
@ -37,7 +37,11 @@ jobs:
git_commit_gpgsign: true git_commit_gpgsign: true
- name: Create Version Branch - name: Create Version Branch
run: git switch -c version_bump_${{ github.event.inputs.version_number }} id: create-branch
run: |
NAME=version_bump_${{ github.ref_name }}_${{ github.event.inputs.version_number }}
git switch -c $NAME
echo "name=$NAME" >> $GITHUB_OUTPUT
- name: Bump Version - Props - name: Bump Version - Props
uses: bitwarden/gh-actions/version-bump@main uses: bitwarden/gh-actions/version-bump@main
@ -69,18 +73,19 @@ jobs:
- name: Push changes - name: Push changes
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }}
run: git push -u origin version_bump_${{ github.event.inputs.version_number }} env:
PR_BRANCH: ${{ steps.create-branch.outputs.name }}
run: git push -u origin $PR_BRANCH
- name: Create Version PR - name: Create Version PR
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }}
env: env:
PR_BRANCH: "version_bump_${{ github.event.inputs.version_number }}" PR_BRANCH: ${{ steps.create-branch.outputs.name }}
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
BASE_BRANCH: master
TITLE: "Bump version to ${{ github.event.inputs.version_number }}" TITLE: "Bump version to ${{ github.event.inputs.version_number }}"
run: | run: |
gh pr create --title "$TITLE" \ gh pr create --title "$TITLE" \
--base "$BASE" \ --base "$GITHUB_REF" \
--head "$PR_BRANCH" \ --head "$PR_BRANCH" \
--label "version update" \ --label "version update" \
--label "automated pr" \ --label "automated pr" \

292
.vscode/launch.json vendored
View File

@ -7,94 +7,251 @@
{ {
"name": "Min Server", "name": "Min Server",
"configurations": [ "configurations": [
"Identity", "run-Identity",
"API" "run-API"
], ],
"presentation": { "presentation": {
"hidden": false, "hidden": false,
"group": "AA_compounds", "group": "AA_compounds",
"order": 1 "order": 1
}, },
"preLaunchTask": "buildIdentityApi",
"stopAll": true "stopAll": true
}, },
{ {
"name": "Admin, API, Identity", "name": "Admin, API, Identity",
"configurations": [ "configurations": [
"Admin", "run-Admin",
"API", "run-API",
"Identity" "run-Identity"
], ],
"presentation": { "presentation": {
"hidden": false, "hidden": false,
"group": "AA_compounds", "group": "AA_compounds",
"order": 3 "order": 3
}, },
"preLaunchTask": "buildIdentityApiAdmin",
"stopAll": true "stopAll": true
}, },
{ {
"name": "Full Server", "name": "Full Server",
"configurations": [ "configurations": [
"Admin", "run-Admin",
"API", "run-API",
"EventsProcessor", "run-EventsProcessor",
"Identity", "run-Identity",
"Sso", "run-Sso",
"Icons", "run-Icons",
"Billing", "run-Billing",
"Notifications" "run-Notifications"
], ],
"presentation": { "presentation": {
"hidden": false, "hidden": false,
"group": "AA_compounds", "group": "AA_compounds",
"order": 4 "order": 4
}, },
"preLaunchTask": "buildFullServer",
"stopAll": true "stopAll": true
}, },
{ {
"name": "Self Host: Bit", "name": "Self Host: Bit",
"configurations": [ "configurations": [
"Admin-SelfHost", "run-Admin-SelfHost",
"API-SelfHost", "run-API-SelfHost",
"EventsProcessor-SelfHost", "run-EventsProcessor-SelfHost",
"Identity-SelfHost", "run-Identity-SelfHost",
"Sso-SelfHost", "run-Sso-SelfHost",
"Notifications-SelfHost" "run-Notifications-SelfHost"
], ],
"presentation": { "presentation": {
"hidden": false, "hidden": false,
"group": "AA_compounds", "group": "AA_compounds",
"order": 2 "order": 2
}, },
"preLaunchTask": "buildSelfHostBit",
"stopAll": true "stopAll": true
}, },
{ {
"name": "Self Host: OSS", "name": "Self Host: OSS",
"configurations": [ "configurations": [
"Admin-SelfHost", "run-Admin-SelfHost",
"API-SelfHost", "run-API-SelfHost",
"EventsProcessor-SelfHost", "run-EventsProcessor-SelfHost",
"Identity-SelfHost", "run-Identity-SelfHost",
], ],
"presentation": { "presentation": {
"hidden": false, "hidden": false,
"group": "AA_compounds", "group": "AA_compounds",
"order": 99 "order": 99
}, },
"preLaunchTask": "buildSelfHostOss",
"stopAll": true "stopAll": true
} },
],
"configurations": [
{ {
"name": "Identity", "name": "Admin",
"configurations": [
"run-Admin"
],
"presentation": { "presentation": {
"hidden": false, "hidden": false,
"group": "cloud", "group": "cloud",
"order": 10 },
"preLaunchTask": "buildAdmin",
},
{
"name": "API",
"configurations": [
"run-API"
],
"presentation": {
"hidden": false,
"group": "cloud",
},
"preLaunchTask": "buildAPI",
},
{
"name": "Billing",
"configurations": [
"run-Billing"
],
"presentation": {
"hidden": false,
"group": "cloud",
},
"preLaunchTask": "buildBilling",
},
{
"name": "Events Processor",
"configurations": [
"run-EventsProcessor"
],
"presentation": {
"hidden": false,
"group": "cloud",
},
"preLaunchTask": "buildEventsProcessor",
},
{
"name": "Icons",
"configurations": [
"run-Icons"
],
"presentation": {
"hidden": false,
"group": "cloud",
},
"preLaunchTask": "buildIcons",
},
{
"name": "Identity",
"configurations": [
"run-Identity"
],
"presentation": {
"hidden": false,
"group": "cloud",
},
"preLaunchTask": "buildIdentity",
},
{
"name": "Notifications",
"configurations": [
"run-Notifications"
],
"presentation": {
"hidden": false,
"group": "cloud",
},
"preLaunchTask": "buildNotifications",
},
{
"name": "SSO",
"configurations": [
"run-Sso"
],
"presentation": {
"hidden": false,
"group": "cloud",
},
"preLaunchTask": "buildSso",
},
{
"name": "Admin Self Host",
"configurations": [
"run-Admin-SelfHost"
],
"presentation": {
"hidden": false,
"group": "self-host",
},
"preLaunchTask": "buildAdmin",
},
{
"name": "API Self Host",
"configurations": [
"run-API-SelfHost"
],
"presentation": {
"hidden": false,
"group": "self-host",
},
"preLaunchTask": "buildAPI",
},
{
"name": "Events Processor Self Host",
"configurations": [
"run-EventsProcessor-SelfHost"
],
"presentation": {
"hidden": false,
"group": "self-host",
},
"preLaunchTask": "buildEventsProcessor",
},
{
"name": "Identity Self Host",
"configurations": [
"run-Identity-SelfHost"
],
"presentation": {
"hidden": false,
"group": "self-host",
},
"preLaunchTask": "buildIdentity",
},
{
"name": "Notifications Self Host",
"configurations": [
"run-Notifications-SelfHost"
],
"presentation": {
"hidden": false,
"group": "self-host",
},
"preLaunchTask": "buildNotifications",
},
{
"name": "SSO Self Host",
"configurations": [
"run-Sso-SelfHost"
],
"presentation": {
"hidden": false,
"group": "self-host",
},
"preLaunchTask": "buildSso",
},
],
"configurations": [
// Configurations represent run-only scenarios so that they can be used in multiple compounds
{
"name": "run-Identity",
"presentation": {
"hidden": true,
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildIdentity",
"program": "${workspaceFolder}/src/Identity/bin/Debug/net6.0/Identity.dll", "program": "${workspaceFolder}/src/Identity/bin/Debug/net6.0/Identity.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/Identity", "cwd": "${workspaceFolder}/src/Identity",
@ -107,16 +264,13 @@
} }
}, },
{ {
"name": "API", "name": "run-API",
"presentation": { "presentation": {
"hidden": false, "hidden": true,
"group": "cloud",
"order": 10
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildAPI",
"program": "${workspaceFolder}/src/Api/bin/Debug/net6.0/Api.dll", "program": "${workspaceFolder}/src/Api/bin/Debug/net6.0/Api.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/Api", "cwd": "${workspaceFolder}/src/Api",
@ -129,16 +283,13 @@
} }
}, },
{ {
"name": "Billing", "name": "run-Billing",
"presentation": { "presentation": {
"hidden": false, "hidden": true,
"group": "cloud",
"order": 10
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildBilling",
"program": "${workspaceFolder}/src/Billing/bin/Debug/net6.0/Billing.dll", "program": "${workspaceFolder}/src/Billing/bin/Debug/net6.0/Billing.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/Billing", "cwd": "${workspaceFolder}/src/Billing",
@ -151,16 +302,13 @@
} }
}, },
{ {
"name": "Admin", "name": "run-Admin",
"presentation": { "presentation": {
"hidden": false, "hidden": true,
"group": "cloud",
"order": 20
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildAdmin",
"OS-COMMENT4": "If you have changed target frameworks, make sure to update the program path.", "OS-COMMENT4": "If you have changed target frameworks, make sure to update the program path.",
"program": "${workspaceFolder}/src/Admin/bin/Debug/net6.0/Admin.dll", "program": "${workspaceFolder}/src/Admin/bin/Debug/net6.0/Admin.dll",
"args": [], "args": [],
@ -175,16 +323,13 @@
} }
}, },
{ {
"name": "Sso", "name": "run-Sso",
"presentation": { "presentation": {
"hidden": false, "hidden": true,
"group": "cloud",
"order": 50
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildSso",
"program": "${workspaceFolder}/bitwarden_license/src/Sso/bin/Debug/net6.0/Sso.dll", "program": "${workspaceFolder}/bitwarden_license/src/Sso/bin/Debug/net6.0/Sso.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/bitwarden_license/src/Sso", "cwd": "${workspaceFolder}/bitwarden_license/src/Sso",
@ -197,16 +342,13 @@
} }
}, },
{ {
"name": "EventsProcessor", "name": "run-EventsProcessor",
"presentation": { "presentation": {
"hidden": false, "hidden": true,
"group": "cloud",
"order": 90
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildEventsProcessor",
"program": "${workspaceFolder}/src/EventsProcessor/bin/Debug/net6.0/EventsProcessor.dll", "program": "${workspaceFolder}/src/EventsProcessor/bin/Debug/net6.0/EventsProcessor.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/EventsProcessor", "cwd": "${workspaceFolder}/src/EventsProcessor",
@ -219,16 +361,13 @@
} }
}, },
{ {
"name": "Icons", "name": "run-Icons",
"presentation": { "presentation": {
"hidden": false, "hidden": true,
"group": "cloud",
"order": 90
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildIcons",
"program": "${workspaceFolder}/src/Icons/bin/Debug/net6.0/Icons.dll", "program": "${workspaceFolder}/src/Icons/bin/Debug/net6.0/Icons.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/Icons", "cwd": "${workspaceFolder}/src/Icons",
@ -241,16 +380,13 @@
} }
}, },
{ {
"name": "Notifications", "name": "run-Notifications",
"presentation": { "presentation": {
"hidden": true, "hidden": true,
"group": "cloud",
"order": 100
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildNotifications",
"program": "${workspaceFolder}/src/Notifications/bin/Debug/net6.0/Notifications.dll", "program": "${workspaceFolder}/src/Notifications/bin/Debug/net6.0/Notifications.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/Notifications", "cwd": "${workspaceFolder}/src/Notifications",
@ -263,16 +399,13 @@
} }
}, },
{ {
"name": "Identity-SelfHost", "name": "run-Identity-SelfHost",
"presentation": { "presentation": {
"hidden": true, "hidden": true,
"group": "self-host",
"order": 999
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildIdentity",
"program": "${workspaceFolder}/src/Identity/bin/Debug/net6.0/Identity.dll", "program": "${workspaceFolder}/src/Identity/bin/Debug/net6.0/Identity.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/Identity", "cwd": "${workspaceFolder}/src/Identity",
@ -287,16 +420,13 @@
} }
}, },
{ {
"name": "API-SelfHost", "name": "run-API-SelfHost",
"presentation": { "presentation": {
"hidden": true, "hidden": true,
"group": "self-host",
"order": 999
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildAPI",
"program": "${workspaceFolder}/src/Api/bin/Debug/net6.0/Api.dll", "program": "${workspaceFolder}/src/Api/bin/Debug/net6.0/Api.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/Api", "cwd": "${workspaceFolder}/src/Api",
@ -311,16 +441,13 @@
} }
}, },
{ {
"name": "Admin-SelfHost", "name": "run-Admin-SelfHost",
"presentation": { "presentation": {
"hidden": true, "hidden": true,
"group": "self-host",
"order": 999
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildAdmin",
"OS-COMMENT4": "If you have changed target frameworks, make sure to update the program path.", "OS-COMMENT4": "If you have changed target frameworks, make sure to update the program path.",
"program": "${workspaceFolder}/src/Admin/bin/Debug/net6.0/Admin.dll", "program": "${workspaceFolder}/src/Admin/bin/Debug/net6.0/Admin.dll",
"args": [], "args": [],
@ -337,16 +464,13 @@
} }
}, },
{ {
"name": "Sso-SelfHost", "name": "run-Sso-SelfHost",
"presentation": { "presentation": {
"hidden": true, "hidden": true,
"group": "self-host",
"order": 999
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildSso",
"program": "${workspaceFolder}/bitwarden_license/src/Sso/bin/Debug/net6.0/Sso.dll", "program": "${workspaceFolder}/bitwarden_license/src/Sso/bin/Debug/net6.0/Sso.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/bitwarden_license/src/Sso", "cwd": "${workspaceFolder}/bitwarden_license/src/Sso",
@ -361,16 +485,13 @@
} }
}, },
{ {
"name": "Notifications-SelfHost", "name": "run-Notifications-SelfHost",
"presentation": { "presentation": {
"hidden": true, "hidden": true,
"group": "self-host",
"order": 999
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildNotifications",
"program": "${workspaceFolder}/src/Notifications/bin/Debug/net6.0/Notifications.dll", "program": "${workspaceFolder}/src/Notifications/bin/Debug/net6.0/Notifications.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/Notifications", "cwd": "${workspaceFolder}/src/Notifications",
@ -385,16 +506,13 @@
} }
}, },
{ {
"name": "EventsProcessor-SelfHost", "name": "run-EventsProcessor-SelfHost",
"presentation": { "presentation": {
"hidden": true, "hidden": true,
"group": "self-host",
"order": 999
}, },
"requireExactSource": true, "requireExactSource": true,
"type": "coreclr", "type": "coreclr",
"request": "launch", "request": "launch",
"preLaunchTask": "buildEventsProcessor",
"program": "${workspaceFolder}/src/EventsProcessor/bin/Debug/net6.0/EventsProcessor.dll", "program": "${workspaceFolder}/src/EventsProcessor/bin/Debug/net6.0/EventsProcessor.dll",
"args": [], "args": [],
"cwd": "${workspaceFolder}/src/EventsProcessor", "cwd": "${workspaceFolder}/src/EventsProcessor",

59
.vscode/tasks.json vendored
View File

@ -1,6 +1,65 @@
{ {
"version": "2.0.0", "version": "2.0.0",
"tasks": [ "tasks": [
{
"label": "buildIdentityApi",
"dependsOrder": "sequence",
"dependsOn": [
"buildIdentity",
"buildAPI"
],
"problemMatcher": [
"$msCompile"
]
},
{
"label": "buildIdentityApiAdmin",
"dependsOrder": "sequence",
"dependsOn": [
"buildIdentity",
"buildAPI",
"buildAdmin"
],
"problemMatcher": [
"$msCompile"
]
},
{
"label": "buildFullServer",
"dependsOrder": "sequence",
"dependsOn": [
"buildAdmin",
"buildAPI",
"buildEventsProcessor",
"buildIdentity",
"buildSso",
"buildIcons",
"buildBilling",
"buildNotifications",
],
},
{
"label": "buildSelfHostBit",
"dependsOrder": "sequence",
"dependsOn": [
"buildAdmin",
"buildAPI",
"buildEventsProcessor",
"buildIdentity",
"buildSso",
"buildNotifications",
],
},
{
"label": "buildSelfHostOss",
"dependsOrder": "sequence",
"dependsOn": [
"buildAdmin",
"buildAPI",
"buildEventsProcessor",
"buildIdentity",
],
},
{ {
"label": "buildIcons", "label": "buildIcons",
"command": "dotnet", "command": "dotnet",

View File

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<Version>2023.10.2</Version> <Version>2023.12.0</Version>
<RootNamespace>Bit.$(MSBuildProjectName)</RootNamespace> <RootNamespace>Bit.$(MSBuildProjectName)</RootNamespace>
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile> <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>

View File

@ -162,6 +162,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fido2": { "Fido2": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.1", "resolved": "3.0.1",
@ -190,57 +208,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"LaunchDarkly.Cache": { "LaunchDarkly.Cache": {
"type": "Transitive", "type": "Transitive",
@ -249,26 +226,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -283,13 +261,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -317,10 +295,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -353,8 +331,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.Azure.Amqp": { "Microsoft.Azure.Amqp": {
"type": "Transitive", "type": "Transitive",
@ -885,8 +863,8 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
"type": "Transitive", "type": "Transitive",
@ -1199,8 +1177,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -2449,11 +2427,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2463,7 +2440,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2472,7 +2449,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }

View File

@ -180,6 +180,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fido2": { "Fido2": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.1", "resolved": "3.0.1",
@ -208,57 +226,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"LaunchDarkly.Cache": { "LaunchDarkly.Cache": {
"type": "Transitive", "type": "Transitive",
@ -267,26 +244,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -301,13 +279,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -319,16 +297,16 @@
}, },
"linq2db": { "linq2db": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.2.1", "resolved": "5.3.1",
"contentHash": "OOBM8s39zhbZAgqFnl2KGxT5RqBDw21X69U528qV2PgQispaA3f+or0ILrLEgnNIJuB4EBgaw8gC6ttSHn4X0Q==" "contentHash": "707mIbEmtptvKeUW940UwoNwq05I7OUu0VWtclLtyYaASp+ugX4I/Er1UVpeldsDawqlVMXB5EQ5/Oar6AkUGQ=="
}, },
"linq2db.EntityFrameworkCore": { "linq2db.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.5.0", "resolved": "7.6.0",
"contentHash": "ePHzO99xbObgMLlAFh08of1SnVhg6j4Su9327DrIB7RZWCgtQIX6k+nbl+HRVOooAndZSs7b+DduSgdnJjaJGw==", "contentHash": "T1W9o8wVzApsUwu7SRg/L7487kaiLQYt2AqRVnXVGfobD+ZKy2oRsUMws0PICtciaz4qbfLp/r/+NksfuYsFlw==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "7.0.0", "Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"linq2db": "5.2.1" "linq2db": "5.3.1"
} }
}, },
"MailKit": { "MailKit": {
@ -349,10 +327,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -385,8 +363,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.Azure.Amqp": { "Microsoft.Azure.Amqp": {
"type": "Transitive", "type": "Transitive",
@ -471,48 +449,44 @@
}, },
"Microsoft.Data.SqlClient": { "Microsoft.Data.SqlClient": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.1",
"contentHash": "uu8dfrsx081cSbEevWuZAvqdmANDGJkbLBL2G3j0LAZxX1Oy8RCVAaC4Lcuak6jNicWP6CWvHqBTIEmQNSxQlw==", "contentHash": "MW5E9HFvCaV069o8b6YpuRDPBux8s96qDnOJ+4N9QNUCs7c5W3KxwQ+ftpAjbMUlImL+c9WR+l+f5hzjkqhu2g==",
"dependencies": { "dependencies": {
"Azure.Identity": "1.6.0", "Azure.Identity": "1.7.0",
"Microsoft.Data.SqlClient.SNI.runtime": "5.0.1", "Microsoft.Data.SqlClient.SNI.runtime": "5.1.0",
"Microsoft.Identity.Client": "4.45.0", "Microsoft.Identity.Client": "4.47.2",
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.21.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.24.0",
"Microsoft.SqlServer.Server": "1.0.0", "Microsoft.SqlServer.Server": "1.0.0",
"Microsoft.Win32.Registry": "5.0.0", "System.Configuration.ConfigurationManager": "6.0.1",
"System.Buffers": "4.5.1", "System.Diagnostics.DiagnosticSource": "6.0.0",
"System.Configuration.ConfigurationManager": "5.0.0", "System.Runtime.Caching": "6.0.0",
"System.Diagnostics.DiagnosticSource": "5.0.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime.Caching": "5.0.0",
"System.Security.Cryptography.Cng": "5.0.0", "System.Security.Cryptography.Cng": "5.0.0",
"System.Security.Principal.Windows": "5.0.0", "System.Security.Principal.Windows": "5.0.0",
"System.Text.Encoding.CodePages": "5.0.0", "System.Text.Encoding.CodePages": "6.0.0",
"System.Text.Encodings.Web": "4.7.2" "System.Text.Encodings.Web": "6.0.0"
} }
}, },
"Microsoft.Data.SqlClient.SNI.runtime": { "Microsoft.Data.SqlClient.SNI.runtime": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "y0X5MxiNdbITJYoafJ2ruaX6hqO0twpCGR/ipiDOe85JKLU8WL4TuAQfDe5qtt3bND5Je26HnrarLSAMMnVTNg==" "contentHash": "jVsElisM5sfBzaaV9kdq2NXZLwIbytetnsOIlJ0cQGgQP4zFNBmkfHBnpwtmKrtBJBEV9+9PVQPVrcCVhDgcIg=="
}, },
"Microsoft.Data.Sqlite.Core": { "Microsoft.Data.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", "contentHash": "qvYae3/v9Fvqsjp/7OKQBuJK+Uc3m/WctfpIUMmGMDot2Bd8UWBKiMSlh26UtfQa9x4N+k7NxCT+AbZVoNrCdg==",
"dependencies": { "dependencies": {
"SQLitePCLRaw.core": "2.1.4" "SQLitePCLRaw.core": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore": { "Microsoft.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "contentHash": "0KYkAemPygW6yzifciFlmMzkO4sI4Dw69xLgwg3ui5rXJS5XvzuAWVvfdrKJciqeCbCnVS/ZbOWpcwWgqce5bQ==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.5", "Microsoft.EntityFrameworkCore.Abstractions": "7.0.14",
"Microsoft.EntityFrameworkCore.Analyzers": "7.0.5", "Microsoft.EntityFrameworkCore.Analyzers": "7.0.14",
"Microsoft.Extensions.Caching.Memory": "7.0.0", "Microsoft.Extensions.Caching.Memory": "7.0.0",
"Microsoft.Extensions.DependencyInjection": "7.0.0", "Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.Logging": "7.0.0" "Microsoft.Extensions.Logging": "7.0.0"
@ -520,49 +494,49 @@
}, },
"Microsoft.EntityFrameworkCore.Abstractions": { "Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "iwQso+hFRsEWjhH2WsEQj1D2QE5BlEXiXEt6A3SlYTPRPdZsyTNDeDDEdtxL+H/UJPQgQYY+9SMMRcEiXBmCAA==" "contentHash": "aEcXDSYpDdD5wdIRKTqcS44f3W4capqQ1BWVRPJgacATfHkO62RX9Nnh0hUFg+rei9OLuJp0Y4zsy1fNeOXv5g=="
}, },
"Microsoft.EntityFrameworkCore.Analyzers": { "Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "yMLM/aK1MikVqpjxd7PJ1Pjgztd3VAd26ZHxyjxG3RPeM9cHjvS5tCg9kAAayR6eHmBg0ffZsHdT28WfA5tTlA==" "contentHash": "esI4RF6mix4DDFBhWB9k1vJxAL8GouSf5ZV8oFJoVsIQ9d2J3MPgC1VL2qM9Vw5cH7Vg7TzRyKNpCRXFVkWs9w=="
}, },
"Microsoft.EntityFrameworkCore.Relational": { "Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "u/33DC4S6g2hpMPgBc5Kdnlz//nqHR5c/ovgjtiP/wQ7sOd0EOdygVzUJAAOxCwbtAHDsJXS9Vc3jLFYq0yu8Q==", "contentHash": "MrVBnWOFYwfLMGQfrcIuqEM9Xvokv1vJeYxqNH3K3xOtAdHwHQTrKnpDP97tU+LBlvcnyXAtAtryYcpLXWtRNA==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.5", "Microsoft.EntityFrameworkCore": "7.0.14",
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0" "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite": { "Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "2XPZB9OLF5/m13HgZp7/Dv0u8FWEJzcaBsMYR9Kp3R6aygkb3RnOijofPDTsmdhAqG9YTysCmh2bFaGs0TCc7A==", "contentHash": "8c8Hw2tmfy5YEsi9RL2/u2Qi9IwVbmj/yDlJy4iJPadeE3/AssLrgtobOBz4ftg2y5PVjFL59Gq7YzGLQH5q1A==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.5", "Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.14",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite.Core": { "Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "4C+9ct6A/Bq61Ta9Uh2td4/XwNpRCiPI03SWTa3hPJjA/g8wCw2hetbh3DDe5HcydzgDq/lRRjU/eRy3UODklQ==", "contentHash": "JNUkZVff1V/A/P3JiBbgt+Y2oCQSuzORxE3jOqFDbFjSFu7jHDEetJ/afSF/taa0lbyN9OpvaKjsbKk3Iis29Q==",
"dependencies": { "dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5", "Microsoft.Data.Sqlite.Core": "7.0.14",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5", "Microsoft.EntityFrameworkCore.Relational": "7.0.14",
"Microsoft.Extensions.DependencyModel": "7.0.0" "Microsoft.Extensions.DependencyModel": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.SqlServer": { "Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "cUJqCiamT0EvpKNgZEV5fqNv2MyVfKNgOPQfFINqHiIKHOYrS0nTCUJP97+UuG0JIIrP792/PwnuNjbekImtBg==", "contentHash": "d9hqEw4W/TdQ1WDm03uyFuDoehL6GNq/NMChFaC4dcV60I42vKdUC0fYTuE2QPunVUpf5XUTCkJ6fYGjMos2AA==",
"dependencies": { "dependencies": {
"Microsoft.Data.SqlClient": "5.0.1", "Microsoft.Data.SqlClient": "5.1.1",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5" "Microsoft.EntityFrameworkCore.Relational": "7.0.14"
} }
}, },
"Microsoft.Extensions.Caching.Abstractions": { "Microsoft.Extensions.Caching.Abstractions": {
@ -815,50 +789,52 @@
}, },
"Microsoft.IdentityModel.Abstractions": { "Microsoft.IdentityModel.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.22.0", "resolved": "6.24.0",
"contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==" "contentHash": "X6aBK56Ot15qKyG7X37KsPnrwah+Ka55NJWPppWVTDi8xWq7CJgeNw2XyaeHgE1o/mW4THwoabZkBbeG2TPBiw=="
}, },
"Microsoft.IdentityModel.JsonWebTokens": { "Microsoft.IdentityModel.JsonWebTokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "d3h1/BaMeylKTkdP6XwRCxuOoDJZ44V9xaXr6gl5QxmpnZGdoK3bySo3OQN8ehRLJHShb94ElLUvoXyglQtgAw==", "contentHash": "XDWrkThcxfuWp79AvAtg5f+uRS1BxkIbJnsG/e8VPzOWkYYuDg33emLjp5EWcwXYYIDsHnVZD/00kM/PYFQc/g==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Json": "4.7.2"
} }
}, },
"Microsoft.IdentityModel.Logging": { "Microsoft.IdentityModel.Logging": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "tuEhHIQwvBEhMf8I50hy8FHmRSUkffDFP5EdLsSDV4qRcl2wvOPkQxYqEzWkh+ytW6sbdJGEXElGhmhDfAxAKg==", "contentHash": "qLYWDOowM/zghmYKXw1yfYKlHOdS41i8t4hVXr9bSI90zHqhyhQh9GwVy8pENzs5wHeytU23DymluC9NtgYv7w==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Abstractions": "6.21.0" "Microsoft.IdentityModel.Abstractions": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols": { "Microsoft.IdentityModel.Protocols": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "0FqY5cTLQKtHrClzHEI+QxJl8OBT2vUiEQQB7UKk832JDiJJmetzYZ3AdSrPjN/3l3nkhByeWzXnhrX0JbifKg==", "contentHash": "+NzKCkvsQ8X1r/Ff74V7CFr9OsdMRaB6DsV+qpH7NNLdYJ8O4qHbmTnNEsjFcDmk/gVNDwhoL2gN5pkPVq0lwQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols.OpenIdConnect": { "Microsoft.IdentityModel.Protocols.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "vtSKL7n6EnAsLyxmiviusm6LKrblT2ndnNqN6rvVq6iIHAnPCK9E2DkDx6h1Jrpy1cvbp40r0cnTg23nhEAGTA==", "contentHash": "a/2RRrc8C9qaw8qdD9hv1ES9YKFgxaqr/SnwMSLbwQZJSUQDd4qx1K4EYgWaQWs73R+VXLyKSxN0f/uE9CsBiQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols": "6.21.0", "Microsoft.IdentityModel.Protocols": "6.24.0",
"System.IdentityModel.Tokens.Jwt": "6.21.0" "System.IdentityModel.Tokens.Jwt": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Tokens": { "Microsoft.IdentityModel.Tokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "AAEHZvZyb597a+QJSmtxH3n2P1nIJGpZ4Q89GTenknRx6T6zyfzf592yW/jA5e8EHN4tNMjjXHQaYWEq5+L05w==", "contentHash": "ZPqHi86UYuqJXJ7bLnlEctHKkPKT4lGUFbotoCNiXNCSL02emYlcxzGYsRGWWmbFEcYDMi2dcTLLYNzHqWOTsw==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.5.0", "Microsoft.CSharp": "4.5.0",
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"System.Security.Cryptography.Cng": "4.5.0" "System.Security.Cryptography.Cng": "4.5.0"
} }
}, },
@ -989,13 +965,13 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"Npgsql": { "Npgsql": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.6",
"contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", "contentHash": "TAqvwRnm3NJ0QvN7cvu6geJkbI0XPzGVRElVY5hF4gsgA+BnE12x6GM1TLhdeq+7ZKvvo3BD8jXKnXmr3tvdEw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "6.0.0", "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0" "System.Runtime.CompilerServices.Unsafe": "6.0.0"
@ -1003,13 +979,13 @@
}, },
"Npgsql.EntityFrameworkCore.PostgreSQL": { "Npgsql.EntityFrameworkCore.PostgreSQL": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.11",
"contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", "contentHash": "cHEgEz0ldXc9wVANs8sJqC+3eilqefrkasCBgaVT0tyj8tb1p3/pwy2ngjboNkDG3M0z+xJsJ4jC5p8wySAM3w==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Relational": "[7.0.11, 8.0.0)",
"Npgsql": "7.0.4" "Npgsql": "7.0.6"
} }
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
@ -1332,8 +1308,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -1466,8 +1442,8 @@
}, },
"System.Configuration.ConfigurationManager": { "System.Configuration.ConfigurationManager": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.0.1",
"contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==",
"dependencies": { "dependencies": {
"System.Security.Cryptography.ProtectedData": "6.0.0", "System.Security.Cryptography.ProtectedData": "6.0.0",
"System.Security.Permissions": "6.0.0" "System.Security.Permissions": "6.0.0"
@ -1626,11 +1602,11 @@
}, },
"System.IdentityModel.Tokens.Jwt": { "System.IdentityModel.Tokens.Jwt": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "JRD8AuypBE+2zYxT3dMJomQVsPYsCqlyZhWel3J1d5nzQokSRyTueF+Q4ID3Jcu6zSZKuzOdJ1MLTkbQsDqcvQ==", "contentHash": "Qibsj9MPWq8S/C0FgvmsLfIlHLE7ay0MJIaAmK94ivN3VyDdglqReed5qMvdQhSL0BzK6v0Z1wB/sD88zVu6Jw==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"System.IO": { "System.IO": {
@ -2079,10 +2055,10 @@
}, },
"System.Runtime.Caching": { "System.Runtime.Caching": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "6.0.0",
"contentHash": "30D6MkO8WF9jVGWZIP0hmCN8l9BTY4LCsAzLIe4xFSXzs+AjDotR7DpSmj27pFskDURzUvqYYY0ikModgBTxWw==", "contentHash": "E0e03kUp5X2k+UAoVl6efmI7uU7JRBWi5EIdlQ7cr0NpBGjHG4fWII35PgsBY9T4fJQ8E4QPsL0rKksU9gcL5A==",
"dependencies": { "dependencies": {
"System.Configuration.ConfigurationManager": "5.0.0" "System.Configuration.ConfigurationManager": "6.0.0"
} }
}, },
"System.Runtime.CompilerServices.Unsafe": { "System.Runtime.CompilerServices.Unsafe": {
@ -2612,11 +2588,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2626,7 +2601,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2635,7 +2610,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }
@ -2644,13 +2619,13 @@
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Relational": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )", "Microsoft.EntityFrameworkCore.SqlServer": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Sqlite": "[7.0.14, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.11, )",
"Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )", "Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )",
"linq2db.EntityFrameworkCore": "[7.5.0, )" "linq2db.EntityFrameworkCore": "[7.6.0, )"
} }
} }
} }

View File

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs; using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs;
using Bit.Core.Entities;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Settings; using Bit.Core.Settings;

View File

@ -1,6 +1,6 @@
using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs; using Bit.Core.AdminConsole.Models.OrganizationConnectionConfigs;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Settings; using Bit.Core.Settings;

View File

@ -1,4 +1,4 @@
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Scim.Models; using Bit.Scim.Models;
namespace Bit.Scim.Groups.Interfaces; namespace Bit.Scim.Groups.Interfaces;

View File

@ -1,5 +1,4 @@
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Entities;
using Bit.Scim.Models; using Bit.Scim.Models;
namespace Bit.Scim.Groups.Interfaces; namespace Bit.Scim.Groups.Interfaces;

View File

@ -1,5 +1,4 @@
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Entities;
using Bit.Scim.Models; using Bit.Scim.Models;
namespace Bit.Scim.Groups.Interfaces; namespace Bit.Scim.Groups.Interfaces;

View File

@ -1,8 +1,8 @@
using System.Text.Json; using System.Text.Json;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.AdminConsole.Services; using Bit.Core.AdminConsole.Services;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Scim.Groups.Interfaces; using Bit.Scim.Groups.Interfaces;

View File

@ -2,7 +2,6 @@
using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Repositories; using Bit.Core.Repositories;

View File

@ -2,7 +2,6 @@
using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Scim.Context; using Bit.Scim.Context;

View File

@ -173,8 +173,8 @@
}, },
"Dapper": { "Dapper": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.123", "resolved": "2.1.24",
"contentHash": "RDFF4rBLLmbpi6pwkY7q/M6UXHRJEOerplDGE5jwEkP/JGJnBauAClYavNKJPW1yOTWRPIyfj4is3EaJxQXILQ==" "contentHash": "/2t2vsdJyZRsk13AsWigZpsuFvEwK+o3v862cEULXoww905gyKhJFSuwmZI/4Ui9COX9ZCFCI09UHyH4wVYl3A=="
}, },
"DnsClient": { "DnsClient": {
"type": "Transitive", "type": "Transitive",
@ -184,6 +184,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fido2": { "Fido2": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.1", "resolved": "3.0.1",
@ -212,57 +230,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"LaunchDarkly.Cache": { "LaunchDarkly.Cache": {
"type": "Transitive", "type": "Transitive",
@ -271,26 +248,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -305,13 +283,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -323,16 +301,16 @@
}, },
"linq2db": { "linq2db": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.2.1", "resolved": "5.3.1",
"contentHash": "OOBM8s39zhbZAgqFnl2KGxT5RqBDw21X69U528qV2PgQispaA3f+or0ILrLEgnNIJuB4EBgaw8gC6ttSHn4X0Q==" "contentHash": "707mIbEmtptvKeUW940UwoNwq05I7OUu0VWtclLtyYaASp+ugX4I/Er1UVpeldsDawqlVMXB5EQ5/Oar6AkUGQ=="
}, },
"linq2db.EntityFrameworkCore": { "linq2db.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.5.0", "resolved": "7.6.0",
"contentHash": "ePHzO99xbObgMLlAFh08of1SnVhg6j4Su9327DrIB7RZWCgtQIX6k+nbl+HRVOooAndZSs7b+DduSgdnJjaJGw==", "contentHash": "T1W9o8wVzApsUwu7SRg/L7487kaiLQYt2AqRVnXVGfobD+ZKy2oRsUMws0PICtciaz4qbfLp/r/+NksfuYsFlw==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "7.0.0", "Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"linq2db": "5.2.1" "linq2db": "5.3.1"
} }
}, },
"MailKit": { "MailKit": {
@ -353,10 +331,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -389,8 +367,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.Azure.Amqp": { "Microsoft.Azure.Amqp": {
"type": "Transitive", "type": "Transitive",
@ -475,48 +453,44 @@
}, },
"Microsoft.Data.SqlClient": { "Microsoft.Data.SqlClient": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.1",
"contentHash": "uu8dfrsx081cSbEevWuZAvqdmANDGJkbLBL2G3j0LAZxX1Oy8RCVAaC4Lcuak6jNicWP6CWvHqBTIEmQNSxQlw==", "contentHash": "MW5E9HFvCaV069o8b6YpuRDPBux8s96qDnOJ+4N9QNUCs7c5W3KxwQ+ftpAjbMUlImL+c9WR+l+f5hzjkqhu2g==",
"dependencies": { "dependencies": {
"Azure.Identity": "1.6.0", "Azure.Identity": "1.7.0",
"Microsoft.Data.SqlClient.SNI.runtime": "5.0.1", "Microsoft.Data.SqlClient.SNI.runtime": "5.1.0",
"Microsoft.Identity.Client": "4.45.0", "Microsoft.Identity.Client": "4.47.2",
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.21.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.24.0",
"Microsoft.SqlServer.Server": "1.0.0", "Microsoft.SqlServer.Server": "1.0.0",
"Microsoft.Win32.Registry": "5.0.0", "System.Configuration.ConfigurationManager": "6.0.1",
"System.Buffers": "4.5.1", "System.Diagnostics.DiagnosticSource": "6.0.0",
"System.Configuration.ConfigurationManager": "5.0.0", "System.Runtime.Caching": "6.0.0",
"System.Diagnostics.DiagnosticSource": "5.0.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime.Caching": "5.0.0",
"System.Security.Cryptography.Cng": "5.0.0", "System.Security.Cryptography.Cng": "5.0.0",
"System.Security.Principal.Windows": "5.0.0", "System.Security.Principal.Windows": "5.0.0",
"System.Text.Encoding.CodePages": "5.0.0", "System.Text.Encoding.CodePages": "6.0.0",
"System.Text.Encodings.Web": "4.7.2" "System.Text.Encodings.Web": "6.0.0"
} }
}, },
"Microsoft.Data.SqlClient.SNI.runtime": { "Microsoft.Data.SqlClient.SNI.runtime": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "y0X5MxiNdbITJYoafJ2ruaX6hqO0twpCGR/ipiDOe85JKLU8WL4TuAQfDe5qtt3bND5Je26HnrarLSAMMnVTNg==" "contentHash": "jVsElisM5sfBzaaV9kdq2NXZLwIbytetnsOIlJ0cQGgQP4zFNBmkfHBnpwtmKrtBJBEV9+9PVQPVrcCVhDgcIg=="
}, },
"Microsoft.Data.Sqlite.Core": { "Microsoft.Data.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", "contentHash": "qvYae3/v9Fvqsjp/7OKQBuJK+Uc3m/WctfpIUMmGMDot2Bd8UWBKiMSlh26UtfQa9x4N+k7NxCT+AbZVoNrCdg==",
"dependencies": { "dependencies": {
"SQLitePCLRaw.core": "2.1.4" "SQLitePCLRaw.core": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore": { "Microsoft.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "contentHash": "0KYkAemPygW6yzifciFlmMzkO4sI4Dw69xLgwg3ui5rXJS5XvzuAWVvfdrKJciqeCbCnVS/ZbOWpcwWgqce5bQ==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.5", "Microsoft.EntityFrameworkCore.Abstractions": "7.0.14",
"Microsoft.EntityFrameworkCore.Analyzers": "7.0.5", "Microsoft.EntityFrameworkCore.Analyzers": "7.0.14",
"Microsoft.Extensions.Caching.Memory": "7.0.0", "Microsoft.Extensions.Caching.Memory": "7.0.0",
"Microsoft.Extensions.DependencyInjection": "7.0.0", "Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.Logging": "7.0.0" "Microsoft.Extensions.Logging": "7.0.0"
@ -524,49 +498,49 @@
}, },
"Microsoft.EntityFrameworkCore.Abstractions": { "Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "iwQso+hFRsEWjhH2WsEQj1D2QE5BlEXiXEt6A3SlYTPRPdZsyTNDeDDEdtxL+H/UJPQgQYY+9SMMRcEiXBmCAA==" "contentHash": "aEcXDSYpDdD5wdIRKTqcS44f3W4capqQ1BWVRPJgacATfHkO62RX9Nnh0hUFg+rei9OLuJp0Y4zsy1fNeOXv5g=="
}, },
"Microsoft.EntityFrameworkCore.Analyzers": { "Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "yMLM/aK1MikVqpjxd7PJ1Pjgztd3VAd26ZHxyjxG3RPeM9cHjvS5tCg9kAAayR6eHmBg0ffZsHdT28WfA5tTlA==" "contentHash": "esI4RF6mix4DDFBhWB9k1vJxAL8GouSf5ZV8oFJoVsIQ9d2J3MPgC1VL2qM9Vw5cH7Vg7TzRyKNpCRXFVkWs9w=="
}, },
"Microsoft.EntityFrameworkCore.Relational": { "Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "u/33DC4S6g2hpMPgBc5Kdnlz//nqHR5c/ovgjtiP/wQ7sOd0EOdygVzUJAAOxCwbtAHDsJXS9Vc3jLFYq0yu8Q==", "contentHash": "MrVBnWOFYwfLMGQfrcIuqEM9Xvokv1vJeYxqNH3K3xOtAdHwHQTrKnpDP97tU+LBlvcnyXAtAtryYcpLXWtRNA==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.5", "Microsoft.EntityFrameworkCore": "7.0.14",
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0" "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite": { "Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "2XPZB9OLF5/m13HgZp7/Dv0u8FWEJzcaBsMYR9Kp3R6aygkb3RnOijofPDTsmdhAqG9YTysCmh2bFaGs0TCc7A==", "contentHash": "8c8Hw2tmfy5YEsi9RL2/u2Qi9IwVbmj/yDlJy4iJPadeE3/AssLrgtobOBz4ftg2y5PVjFL59Gq7YzGLQH5q1A==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.5", "Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.14",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite.Core": { "Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "4C+9ct6A/Bq61Ta9Uh2td4/XwNpRCiPI03SWTa3hPJjA/g8wCw2hetbh3DDe5HcydzgDq/lRRjU/eRy3UODklQ==", "contentHash": "JNUkZVff1V/A/P3JiBbgt+Y2oCQSuzORxE3jOqFDbFjSFu7jHDEetJ/afSF/taa0lbyN9OpvaKjsbKk3Iis29Q==",
"dependencies": { "dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5", "Microsoft.Data.Sqlite.Core": "7.0.14",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5", "Microsoft.EntityFrameworkCore.Relational": "7.0.14",
"Microsoft.Extensions.DependencyModel": "7.0.0" "Microsoft.Extensions.DependencyModel": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.SqlServer": { "Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "cUJqCiamT0EvpKNgZEV5fqNv2MyVfKNgOPQfFINqHiIKHOYrS0nTCUJP97+UuG0JIIrP792/PwnuNjbekImtBg==", "contentHash": "d9hqEw4W/TdQ1WDm03uyFuDoehL6GNq/NMChFaC4dcV60I42vKdUC0fYTuE2QPunVUpf5XUTCkJ6fYGjMos2AA==",
"dependencies": { "dependencies": {
"Microsoft.Data.SqlClient": "5.0.1", "Microsoft.Data.SqlClient": "5.1.1",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5" "Microsoft.EntityFrameworkCore.Relational": "7.0.14"
} }
}, },
"Microsoft.Extensions.Caching.Abstractions": { "Microsoft.Extensions.Caching.Abstractions": {
@ -819,50 +793,52 @@
}, },
"Microsoft.IdentityModel.Abstractions": { "Microsoft.IdentityModel.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.22.0", "resolved": "6.24.0",
"contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==" "contentHash": "X6aBK56Ot15qKyG7X37KsPnrwah+Ka55NJWPppWVTDi8xWq7CJgeNw2XyaeHgE1o/mW4THwoabZkBbeG2TPBiw=="
}, },
"Microsoft.IdentityModel.JsonWebTokens": { "Microsoft.IdentityModel.JsonWebTokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "d3h1/BaMeylKTkdP6XwRCxuOoDJZ44V9xaXr6gl5QxmpnZGdoK3bySo3OQN8ehRLJHShb94ElLUvoXyglQtgAw==", "contentHash": "XDWrkThcxfuWp79AvAtg5f+uRS1BxkIbJnsG/e8VPzOWkYYuDg33emLjp5EWcwXYYIDsHnVZD/00kM/PYFQc/g==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Json": "4.7.2"
} }
}, },
"Microsoft.IdentityModel.Logging": { "Microsoft.IdentityModel.Logging": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "tuEhHIQwvBEhMf8I50hy8FHmRSUkffDFP5EdLsSDV4qRcl2wvOPkQxYqEzWkh+ytW6sbdJGEXElGhmhDfAxAKg==", "contentHash": "qLYWDOowM/zghmYKXw1yfYKlHOdS41i8t4hVXr9bSI90zHqhyhQh9GwVy8pENzs5wHeytU23DymluC9NtgYv7w==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Abstractions": "6.21.0" "Microsoft.IdentityModel.Abstractions": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols": { "Microsoft.IdentityModel.Protocols": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "0FqY5cTLQKtHrClzHEI+QxJl8OBT2vUiEQQB7UKk832JDiJJmetzYZ3AdSrPjN/3l3nkhByeWzXnhrX0JbifKg==", "contentHash": "+NzKCkvsQ8X1r/Ff74V7CFr9OsdMRaB6DsV+qpH7NNLdYJ8O4qHbmTnNEsjFcDmk/gVNDwhoL2gN5pkPVq0lwQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols.OpenIdConnect": { "Microsoft.IdentityModel.Protocols.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "vtSKL7n6EnAsLyxmiviusm6LKrblT2ndnNqN6rvVq6iIHAnPCK9E2DkDx6h1Jrpy1cvbp40r0cnTg23nhEAGTA==", "contentHash": "a/2RRrc8C9qaw8qdD9hv1ES9YKFgxaqr/SnwMSLbwQZJSUQDd4qx1K4EYgWaQWs73R+VXLyKSxN0f/uE9CsBiQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols": "6.21.0", "Microsoft.IdentityModel.Protocols": "6.24.0",
"System.IdentityModel.Tokens.Jwt": "6.21.0" "System.IdentityModel.Tokens.Jwt": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Tokens": { "Microsoft.IdentityModel.Tokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "AAEHZvZyb597a+QJSmtxH3n2P1nIJGpZ4Q89GTenknRx6T6zyfzf592yW/jA5e8EHN4tNMjjXHQaYWEq5+L05w==", "contentHash": "ZPqHi86UYuqJXJ7bLnlEctHKkPKT4lGUFbotoCNiXNCSL02emYlcxzGYsRGWWmbFEcYDMi2dcTLLYNzHqWOTsw==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.5.0", "Microsoft.CSharp": "4.5.0",
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"System.Security.Cryptography.Cng": "4.5.0" "System.Security.Cryptography.Cng": "4.5.0"
} }
}, },
@ -993,13 +969,13 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"Npgsql": { "Npgsql": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.6",
"contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", "contentHash": "TAqvwRnm3NJ0QvN7cvu6geJkbI0XPzGVRElVY5hF4gsgA+BnE12x6GM1TLhdeq+7ZKvvo3BD8jXKnXmr3tvdEw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "6.0.0", "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0" "System.Runtime.CompilerServices.Unsafe": "6.0.0"
@ -1007,13 +983,13 @@
}, },
"Npgsql.EntityFrameworkCore.PostgreSQL": { "Npgsql.EntityFrameworkCore.PostgreSQL": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.11",
"contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", "contentHash": "cHEgEz0ldXc9wVANs8sJqC+3eilqefrkasCBgaVT0tyj8tb1p3/pwy2ngjboNkDG3M0z+xJsJ4jC5p8wySAM3w==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Relational": "[7.0.11, 8.0.0)",
"Npgsql": "7.0.4" "Npgsql": "7.0.6"
} }
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
@ -1336,8 +1312,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -1470,8 +1446,8 @@
}, },
"System.Configuration.ConfigurationManager": { "System.Configuration.ConfigurationManager": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.0.1",
"contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==",
"dependencies": { "dependencies": {
"System.Security.Cryptography.ProtectedData": "6.0.0", "System.Security.Cryptography.ProtectedData": "6.0.0",
"System.Security.Permissions": "6.0.0" "System.Security.Permissions": "6.0.0"
@ -1630,11 +1606,11 @@
}, },
"System.IdentityModel.Tokens.Jwt": { "System.IdentityModel.Tokens.Jwt": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "JRD8AuypBE+2zYxT3dMJomQVsPYsCqlyZhWel3J1d5nzQokSRyTueF+Q4ID3Jcu6zSZKuzOdJ1MLTkbQsDqcvQ==", "contentHash": "Qibsj9MPWq8S/C0FgvmsLfIlHLE7ay0MJIaAmK94ivN3VyDdglqReed5qMvdQhSL0BzK6v0Z1wB/sD88zVu6Jw==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"System.IO": { "System.IO": {
@ -2083,10 +2059,10 @@
}, },
"System.Runtime.Caching": { "System.Runtime.Caching": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "6.0.0",
"contentHash": "30D6MkO8WF9jVGWZIP0hmCN8l9BTY4LCsAzLIe4xFSXzs+AjDotR7DpSmj27pFskDURzUvqYYY0ikModgBTxWw==", "contentHash": "E0e03kUp5X2k+UAoVl6efmI7uU7JRBWi5EIdlQ7cr0NpBGjHG4fWII35PgsBY9T4fJQ8E4QPsL0rKksU9gcL5A==",
"dependencies": { "dependencies": {
"System.Configuration.ConfigurationManager": "5.0.0" "System.Configuration.ConfigurationManager": "6.0.0"
} }
}, },
"System.Runtime.CompilerServices.Unsafe": { "System.Runtime.CompilerServices.Unsafe": {
@ -2616,11 +2592,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2630,7 +2605,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2639,7 +2614,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }
@ -2647,29 +2622,29 @@
"infrastructure.dapper": { "infrastructure.dapper": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Dapper": "[2.0.123, )" "Dapper": "[2.1.24, )"
} }
}, },
"infrastructure.entityframework": { "infrastructure.entityframework": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Relational": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )", "Microsoft.EntityFrameworkCore.SqlServer": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Sqlite": "[7.0.14, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.11, )",
"Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )", "Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )",
"linq2db.EntityFrameworkCore": "[7.5.0, )" "linq2db.EntityFrameworkCore": "[7.6.0, )"
} }
}, },
"sharedweb": { "sharedweb": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.Dapper": "[2023.10.2, )", "Infrastructure.Dapper": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
} }
} }

View File

@ -1,5 +1,7 @@
using System.Security.Claims; using System.Security.Claims;
using Bit.Core; using Bit.Core;
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Auth.Entities; using Bit.Core.Auth.Entities;
using Bit.Core.Auth.Enums; using Bit.Core.Auth.Enums;
using Bit.Core.Auth.Models; using Bit.Core.Auth.Models;
@ -16,14 +18,15 @@ using Bit.Core.Tokens;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using Bit.Sso.Models; using Bit.Sso.Models;
using Bit.Sso.Utilities; using Bit.Sso.Utilities;
using Duende.IdentityServer;
using Duende.IdentityServer.Extensions;
using Duende.IdentityServer.Services;
using Duende.IdentityServer.Stores;
using IdentityModel; using IdentityModel;
using IdentityServer4;
using IdentityServer4.Extensions;
using IdentityServer4.Services;
using IdentityServer4.Stores;
using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using DIM = Duende.IdentityServer.Models;
namespace Bit.Sso.Controllers; namespace Bit.Sso.Controllers;
@ -717,7 +720,7 @@ public class AccountController : Controller
return (logoutId, logout?.PostLogoutRedirectUri, externalAuthenticationScheme); return (logoutId, logout?.PostLogoutRedirectUri, externalAuthenticationScheme);
} }
public bool IsNativeClient(IdentityServer4.Models.AuthorizationRequest context) public bool IsNativeClient(DIM.AuthorizationRequest context)
{ {
return !context.RedirectUri.StartsWith("https", StringComparison.Ordinal) return !context.RedirectUri.StartsWith("https", StringComparison.Ordinal)
&& !context.RedirectUri.StartsWith("http", StringComparison.Ordinal); && !context.RedirectUri.StartsWith("http", StringComparison.Ordinal);

View File

@ -1,6 +1,6 @@
using System.Diagnostics; using System.Diagnostics;
using Bit.Sso.Models; using Bit.Sso.Models;
using IdentityServer4.Services; using Duende.IdentityServer.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;

View File

@ -1,6 +1,6 @@
using Bit.Core.Settings; using Bit.Core.Settings;
using IdentityServer4; using Duende.IdentityServer;
using IdentityServer4.Models; using Duende.IdentityServer.Models;
namespace Bit.Sso.IdentityServer; namespace Bit.Sso.IdentityServer;

View File

@ -1,4 +1,4 @@
using IdentityServer4.Models; using Duende.IdentityServer.Models;
namespace Bit.Sso.Models; namespace Bit.Sso.Models;

View File

@ -6,7 +6,7 @@ using Bit.Core.Settings;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using Bit.SharedWeb.Utilities; using Bit.SharedWeb.Utilities;
using Bit.Sso.Utilities; using Bit.Sso.Utilities;
using IdentityServer4.Extensions; using Duende.IdentityServer.Extensions;
using Microsoft.IdentityModel.Logging; using Microsoft.IdentityModel.Logging;
using Stripe; using Stripe;

View File

@ -1,13 +1,14 @@
using Bit.Core.Settings; using Bit.Core.Settings;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using IdentityServer4.Configuration; using Duende.IdentityServer.Configuration;
using IdentityServer4.Services; using Duende.IdentityServer.Services;
using IdentityServer4.Stores; using Duende.IdentityServer.Stores;
using IdentityServer4.Validation; using Duende.IdentityServer.Validation;
using DIR = Duende.IdentityServer.ResponseHandling;
namespace Bit.Sso.Utilities; namespace Bit.Sso.Utilities;
public class DiscoveryResponseGenerator : IdentityServer4.ResponseHandling.DiscoveryResponseGenerator public class DiscoveryResponseGenerator : DIR.DiscoveryResponseGenerator
{ {
private readonly GlobalSettings _globalSettings; private readonly GlobalSettings _globalSettings;

View File

@ -7,9 +7,9 @@ using Bit.Core.Settings;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using Bit.Sso.Models; using Bit.Sso.Models;
using Bit.Sso.Utilities; using Bit.Sso.Utilities;
using Duende.IdentityServer;
using Duende.IdentityServer.Infrastructure;
using IdentityModel; using IdentityModel;
using IdentityServer4;
using IdentityServer4.Infrastructure;
using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
@ -34,7 +34,7 @@ public class DynamicAuthenticationSchemeProvider : AuthenticationSchemeProvider
private readonly Dictionary<string, DynamicAuthenticationScheme> _cachedSchemes; private readonly Dictionary<string, DynamicAuthenticationScheme> _cachedSchemes;
private readonly Dictionary<string, DynamicAuthenticationScheme> _cachedHandlerSchemes; private readonly Dictionary<string, DynamicAuthenticationScheme> _cachedHandlerSchemes;
private readonly SemaphoreSlim _semaphore; private readonly SemaphoreSlim _semaphore;
private readonly IHttpContextAccessor _httpContextAccessor; private readonly IServiceProvider _serviceProvider;
private DateTime? _lastSchemeLoad; private DateTime? _lastSchemeLoad;
private IEnumerable<DynamicAuthenticationScheme> _schemesCopy = Array.Empty<DynamicAuthenticationScheme>(); private IEnumerable<DynamicAuthenticationScheme> _schemesCopy = Array.Empty<DynamicAuthenticationScheme>();
@ -50,7 +50,7 @@ public class DynamicAuthenticationSchemeProvider : AuthenticationSchemeProvider
ILogger<DynamicAuthenticationSchemeProvider> logger, ILogger<DynamicAuthenticationSchemeProvider> logger,
GlobalSettings globalSettings, GlobalSettings globalSettings,
SamlEnvironment samlEnvironment, SamlEnvironment samlEnvironment,
IHttpContextAccessor httpContextAccessor) IServiceProvider serviceProvider)
: base(options) : base(options)
{ {
_oidcPostConfigureOptions = oidcPostConfigureOptions; _oidcPostConfigureOptions = oidcPostConfigureOptions;
@ -77,7 +77,7 @@ public class DynamicAuthenticationSchemeProvider : AuthenticationSchemeProvider
_cachedSchemes = new Dictionary<string, DynamicAuthenticationScheme>(); _cachedSchemes = new Dictionary<string, DynamicAuthenticationScheme>();
_cachedHandlerSchemes = new Dictionary<string, DynamicAuthenticationScheme>(); _cachedHandlerSchemes = new Dictionary<string, DynamicAuthenticationScheme>();
_semaphore = new SemaphoreSlim(1); _semaphore = new SemaphoreSlim(1);
_httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
} }
private bool CacheIsValid private bool CacheIsValid
@ -324,7 +324,7 @@ public class DynamicAuthenticationSchemeProvider : AuthenticationSchemeProvider
oidcOptions.Scope.AddIfNotExists(OpenIdConnectScopes.Acr); oidcOptions.Scope.AddIfNotExists(OpenIdConnectScopes.Acr);
} }
oidcOptions.StateDataFormat = new DistributedCacheStateDataFormatter(_httpContextAccessor, name); oidcOptions.StateDataFormat = new DistributedCacheStateDataFormatter(_serviceProvider, name);
// see: https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest (acr_values) // see: https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest (acr_values)
if (!string.IsNullOrWhiteSpace(config.AcrValues)) if (!string.IsNullOrWhiteSpace(config.AcrValues))

View File

@ -4,8 +4,8 @@ using Bit.Core.Utilities;
using Bit.SharedWeb.Utilities; using Bit.SharedWeb.Utilities;
using Bit.Sso.IdentityServer; using Bit.Sso.IdentityServer;
using Bit.Sso.Models; using Bit.Sso.Models;
using IdentityServer4.Models; using Duende.IdentityServer.Models;
using IdentityServer4.ResponseHandling; using Duende.IdentityServer.ResponseHandling;
using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Sustainsys.Saml2.AspNetCore2; using Sustainsys.Saml2.AspNetCore2;
@ -59,6 +59,7 @@ public static class ServiceCollectionExtensions
options.UserInteraction.ErrorIdParameter = "errorId"; options.UserInteraction.ErrorIdParameter = "errorId";
} }
options.InputLengthRestrictions.UserName = 256; options.InputLengthRestrictions.UserName = 256;
options.KeyManagement.Enabled = false;
}) })
.AddInMemoryCaching() .AddInMemoryCaching()
.AddInMemoryClients(new List<Client> .AddInMemoryClients(new List<Client>

View File

@ -198,8 +198,8 @@
}, },
"Dapper": { "Dapper": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.123", "resolved": "2.1.24",
"contentHash": "RDFF4rBLLmbpi6pwkY7q/M6UXHRJEOerplDGE5jwEkP/JGJnBauAClYavNKJPW1yOTWRPIyfj4is3EaJxQXILQ==" "contentHash": "/2t2vsdJyZRsk13AsWigZpsuFvEwK+o3v862cEULXoww905gyKhJFSuwmZI/4Ui9COX9ZCFCI09UHyH4wVYl3A=="
}, },
"DnsClient": { "DnsClient": {
"type": "Transitive", "type": "Transitive",
@ -209,6 +209,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fido2": { "Fido2": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.1", "resolved": "3.0.1",
@ -237,57 +255,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"LaunchDarkly.Cache": { "LaunchDarkly.Cache": {
"type": "Transitive", "type": "Transitive",
@ -296,26 +273,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -330,13 +308,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -348,16 +326,16 @@
}, },
"linq2db": { "linq2db": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.2.1", "resolved": "5.3.1",
"contentHash": "OOBM8s39zhbZAgqFnl2KGxT5RqBDw21X69U528qV2PgQispaA3f+or0ILrLEgnNIJuB4EBgaw8gC6ttSHn4X0Q==" "contentHash": "707mIbEmtptvKeUW940UwoNwq05I7OUu0VWtclLtyYaASp+ugX4I/Er1UVpeldsDawqlVMXB5EQ5/Oar6AkUGQ=="
}, },
"linq2db.EntityFrameworkCore": { "linq2db.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.5.0", "resolved": "7.6.0",
"contentHash": "ePHzO99xbObgMLlAFh08of1SnVhg6j4Su9327DrIB7RZWCgtQIX6k+nbl+HRVOooAndZSs7b+DduSgdnJjaJGw==", "contentHash": "T1W9o8wVzApsUwu7SRg/L7487kaiLQYt2AqRVnXVGfobD+ZKy2oRsUMws0PICtciaz4qbfLp/r/+NksfuYsFlw==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "7.0.0", "Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"linq2db": "5.2.1" "linq2db": "5.3.1"
} }
}, },
"MailKit": { "MailKit": {
@ -420,10 +398,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -456,8 +434,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.AspNetCore.Http.Abstractions": { "Microsoft.AspNetCore.Http.Abstractions": {
"type": "Transitive", "type": "Transitive",
@ -579,48 +557,44 @@
}, },
"Microsoft.Data.SqlClient": { "Microsoft.Data.SqlClient": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.1",
"contentHash": "uu8dfrsx081cSbEevWuZAvqdmANDGJkbLBL2G3j0LAZxX1Oy8RCVAaC4Lcuak6jNicWP6CWvHqBTIEmQNSxQlw==", "contentHash": "MW5E9HFvCaV069o8b6YpuRDPBux8s96qDnOJ+4N9QNUCs7c5W3KxwQ+ftpAjbMUlImL+c9WR+l+f5hzjkqhu2g==",
"dependencies": { "dependencies": {
"Azure.Identity": "1.6.0", "Azure.Identity": "1.7.0",
"Microsoft.Data.SqlClient.SNI.runtime": "5.0.1", "Microsoft.Data.SqlClient.SNI.runtime": "5.1.0",
"Microsoft.Identity.Client": "4.45.0", "Microsoft.Identity.Client": "4.47.2",
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.21.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.24.0",
"Microsoft.SqlServer.Server": "1.0.0", "Microsoft.SqlServer.Server": "1.0.0",
"Microsoft.Win32.Registry": "5.0.0", "System.Configuration.ConfigurationManager": "6.0.1",
"System.Buffers": "4.5.1", "System.Diagnostics.DiagnosticSource": "6.0.0",
"System.Configuration.ConfigurationManager": "5.0.0", "System.Runtime.Caching": "6.0.0",
"System.Diagnostics.DiagnosticSource": "5.0.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime.Caching": "5.0.0",
"System.Security.Cryptography.Cng": "5.0.0", "System.Security.Cryptography.Cng": "5.0.0",
"System.Security.Principal.Windows": "5.0.0", "System.Security.Principal.Windows": "5.0.0",
"System.Text.Encoding.CodePages": "5.0.0", "System.Text.Encoding.CodePages": "6.0.0",
"System.Text.Encodings.Web": "4.7.2" "System.Text.Encodings.Web": "6.0.0"
} }
}, },
"Microsoft.Data.SqlClient.SNI.runtime": { "Microsoft.Data.SqlClient.SNI.runtime": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "y0X5MxiNdbITJYoafJ2ruaX6hqO0twpCGR/ipiDOe85JKLU8WL4TuAQfDe5qtt3bND5Je26HnrarLSAMMnVTNg==" "contentHash": "jVsElisM5sfBzaaV9kdq2NXZLwIbytetnsOIlJ0cQGgQP4zFNBmkfHBnpwtmKrtBJBEV9+9PVQPVrcCVhDgcIg=="
}, },
"Microsoft.Data.Sqlite.Core": { "Microsoft.Data.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", "contentHash": "qvYae3/v9Fvqsjp/7OKQBuJK+Uc3m/WctfpIUMmGMDot2Bd8UWBKiMSlh26UtfQa9x4N+k7NxCT+AbZVoNrCdg==",
"dependencies": { "dependencies": {
"SQLitePCLRaw.core": "2.1.4" "SQLitePCLRaw.core": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore": { "Microsoft.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "contentHash": "0KYkAemPygW6yzifciFlmMzkO4sI4Dw69xLgwg3ui5rXJS5XvzuAWVvfdrKJciqeCbCnVS/ZbOWpcwWgqce5bQ==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.5", "Microsoft.EntityFrameworkCore.Abstractions": "7.0.14",
"Microsoft.EntityFrameworkCore.Analyzers": "7.0.5", "Microsoft.EntityFrameworkCore.Analyzers": "7.0.14",
"Microsoft.Extensions.Caching.Memory": "7.0.0", "Microsoft.Extensions.Caching.Memory": "7.0.0",
"Microsoft.Extensions.DependencyInjection": "7.0.0", "Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.Logging": "7.0.0" "Microsoft.Extensions.Logging": "7.0.0"
@ -628,49 +602,49 @@
}, },
"Microsoft.EntityFrameworkCore.Abstractions": { "Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "iwQso+hFRsEWjhH2WsEQj1D2QE5BlEXiXEt6A3SlYTPRPdZsyTNDeDDEdtxL+H/UJPQgQYY+9SMMRcEiXBmCAA==" "contentHash": "aEcXDSYpDdD5wdIRKTqcS44f3W4capqQ1BWVRPJgacATfHkO62RX9Nnh0hUFg+rei9OLuJp0Y4zsy1fNeOXv5g=="
}, },
"Microsoft.EntityFrameworkCore.Analyzers": { "Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "yMLM/aK1MikVqpjxd7PJ1Pjgztd3VAd26ZHxyjxG3RPeM9cHjvS5tCg9kAAayR6eHmBg0ffZsHdT28WfA5tTlA==" "contentHash": "esI4RF6mix4DDFBhWB9k1vJxAL8GouSf5ZV8oFJoVsIQ9d2J3MPgC1VL2qM9Vw5cH7Vg7TzRyKNpCRXFVkWs9w=="
}, },
"Microsoft.EntityFrameworkCore.Relational": { "Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "u/33DC4S6g2hpMPgBc5Kdnlz//nqHR5c/ovgjtiP/wQ7sOd0EOdygVzUJAAOxCwbtAHDsJXS9Vc3jLFYq0yu8Q==", "contentHash": "MrVBnWOFYwfLMGQfrcIuqEM9Xvokv1vJeYxqNH3K3xOtAdHwHQTrKnpDP97tU+LBlvcnyXAtAtryYcpLXWtRNA==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.5", "Microsoft.EntityFrameworkCore": "7.0.14",
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0" "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite": { "Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "2XPZB9OLF5/m13HgZp7/Dv0u8FWEJzcaBsMYR9Kp3R6aygkb3RnOijofPDTsmdhAqG9YTysCmh2bFaGs0TCc7A==", "contentHash": "8c8Hw2tmfy5YEsi9RL2/u2Qi9IwVbmj/yDlJy4iJPadeE3/AssLrgtobOBz4ftg2y5PVjFL59Gq7YzGLQH5q1A==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.5", "Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.14",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite.Core": { "Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "4C+9ct6A/Bq61Ta9Uh2td4/XwNpRCiPI03SWTa3hPJjA/g8wCw2hetbh3DDe5HcydzgDq/lRRjU/eRy3UODklQ==", "contentHash": "JNUkZVff1V/A/P3JiBbgt+Y2oCQSuzORxE3jOqFDbFjSFu7jHDEetJ/afSF/taa0lbyN9OpvaKjsbKk3Iis29Q==",
"dependencies": { "dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5", "Microsoft.Data.Sqlite.Core": "7.0.14",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5", "Microsoft.EntityFrameworkCore.Relational": "7.0.14",
"Microsoft.Extensions.DependencyModel": "7.0.0" "Microsoft.Extensions.DependencyModel": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.SqlServer": { "Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "cUJqCiamT0EvpKNgZEV5fqNv2MyVfKNgOPQfFINqHiIKHOYrS0nTCUJP97+UuG0JIIrP792/PwnuNjbekImtBg==", "contentHash": "d9hqEw4W/TdQ1WDm03uyFuDoehL6GNq/NMChFaC4dcV60I42vKdUC0fYTuE2QPunVUpf5XUTCkJ6fYGjMos2AA==",
"dependencies": { "dependencies": {
"Microsoft.Data.SqlClient": "5.0.1", "Microsoft.Data.SqlClient": "5.1.1",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5" "Microsoft.EntityFrameworkCore.Relational": "7.0.14"
} }
}, },
"Microsoft.Extensions.Caching.Abstractions": { "Microsoft.Extensions.Caching.Abstractions": {
@ -938,50 +912,52 @@
}, },
"Microsoft.IdentityModel.Abstractions": { "Microsoft.IdentityModel.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.22.0", "resolved": "6.24.0",
"contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==" "contentHash": "X6aBK56Ot15qKyG7X37KsPnrwah+Ka55NJWPppWVTDi8xWq7CJgeNw2XyaeHgE1o/mW4THwoabZkBbeG2TPBiw=="
}, },
"Microsoft.IdentityModel.JsonWebTokens": { "Microsoft.IdentityModel.JsonWebTokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "d3h1/BaMeylKTkdP6XwRCxuOoDJZ44V9xaXr6gl5QxmpnZGdoK3bySo3OQN8ehRLJHShb94ElLUvoXyglQtgAw==", "contentHash": "XDWrkThcxfuWp79AvAtg5f+uRS1BxkIbJnsG/e8VPzOWkYYuDg33emLjp5EWcwXYYIDsHnVZD/00kM/PYFQc/g==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Json": "4.7.2"
} }
}, },
"Microsoft.IdentityModel.Logging": { "Microsoft.IdentityModel.Logging": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "tuEhHIQwvBEhMf8I50hy8FHmRSUkffDFP5EdLsSDV4qRcl2wvOPkQxYqEzWkh+ytW6sbdJGEXElGhmhDfAxAKg==", "contentHash": "qLYWDOowM/zghmYKXw1yfYKlHOdS41i8t4hVXr9bSI90zHqhyhQh9GwVy8pENzs5wHeytU23DymluC9NtgYv7w==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Abstractions": "6.21.0" "Microsoft.IdentityModel.Abstractions": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols": { "Microsoft.IdentityModel.Protocols": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "0FqY5cTLQKtHrClzHEI+QxJl8OBT2vUiEQQB7UKk832JDiJJmetzYZ3AdSrPjN/3l3nkhByeWzXnhrX0JbifKg==", "contentHash": "+NzKCkvsQ8X1r/Ff74V7CFr9OsdMRaB6DsV+qpH7NNLdYJ8O4qHbmTnNEsjFcDmk/gVNDwhoL2gN5pkPVq0lwQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols.OpenIdConnect": { "Microsoft.IdentityModel.Protocols.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "vtSKL7n6EnAsLyxmiviusm6LKrblT2ndnNqN6rvVq6iIHAnPCK9E2DkDx6h1Jrpy1cvbp40r0cnTg23nhEAGTA==", "contentHash": "a/2RRrc8C9qaw8qdD9hv1ES9YKFgxaqr/SnwMSLbwQZJSUQDd4qx1K4EYgWaQWs73R+VXLyKSxN0f/uE9CsBiQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols": "6.21.0", "Microsoft.IdentityModel.Protocols": "6.24.0",
"System.IdentityModel.Tokens.Jwt": "6.21.0" "System.IdentityModel.Tokens.Jwt": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Tokens": { "Microsoft.IdentityModel.Tokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "AAEHZvZyb597a+QJSmtxH3n2P1nIJGpZ4Q89GTenknRx6T6zyfzf592yW/jA5e8EHN4tNMjjXHQaYWEq5+L05w==", "contentHash": "ZPqHi86UYuqJXJ7bLnlEctHKkPKT4lGUFbotoCNiXNCSL02emYlcxzGYsRGWWmbFEcYDMi2dcTLLYNzHqWOTsw==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.5.0", "Microsoft.CSharp": "4.5.0",
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"System.Security.Cryptography.Cng": "4.5.0" "System.Security.Cryptography.Cng": "4.5.0"
} }
}, },
@ -1140,13 +1116,13 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"Npgsql": { "Npgsql": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.6",
"contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", "contentHash": "TAqvwRnm3NJ0QvN7cvu6geJkbI0XPzGVRElVY5hF4gsgA+BnE12x6GM1TLhdeq+7ZKvvo3BD8jXKnXmr3tvdEw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "6.0.0", "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0" "System.Runtime.CompilerServices.Unsafe": "6.0.0"
@ -1154,13 +1130,13 @@
}, },
"Npgsql.EntityFrameworkCore.PostgreSQL": { "Npgsql.EntityFrameworkCore.PostgreSQL": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.11",
"contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", "contentHash": "cHEgEz0ldXc9wVANs8sJqC+3eilqefrkasCBgaVT0tyj8tb1p3/pwy2ngjboNkDG3M0z+xJsJ4jC5p8wySAM3w==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Relational": "[7.0.11, 8.0.0)",
"Npgsql": "7.0.4" "Npgsql": "7.0.6"
} }
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
@ -1483,8 +1459,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -1630,8 +1606,8 @@
}, },
"System.Configuration.ConfigurationManager": { "System.Configuration.ConfigurationManager": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.0.1",
"contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==",
"dependencies": { "dependencies": {
"System.Security.Cryptography.ProtectedData": "6.0.0", "System.Security.Cryptography.ProtectedData": "6.0.0",
"System.Security.Permissions": "6.0.0" "System.Security.Permissions": "6.0.0"
@ -1790,11 +1766,11 @@
}, },
"System.IdentityModel.Tokens.Jwt": { "System.IdentityModel.Tokens.Jwt": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "JRD8AuypBE+2zYxT3dMJomQVsPYsCqlyZhWel3J1d5nzQokSRyTueF+Q4ID3Jcu6zSZKuzOdJ1MLTkbQsDqcvQ==", "contentHash": "Qibsj9MPWq8S/C0FgvmsLfIlHLE7ay0MJIaAmK94ivN3VyDdglqReed5qMvdQhSL0BzK6v0Z1wB/sD88zVu6Jw==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"System.IO": { "System.IO": {
@ -2243,10 +2219,10 @@
}, },
"System.Runtime.Caching": { "System.Runtime.Caching": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "6.0.0",
"contentHash": "30D6MkO8WF9jVGWZIP0hmCN8l9BTY4LCsAzLIe4xFSXzs+AjDotR7DpSmj27pFskDURzUvqYYY0ikModgBTxWw==", "contentHash": "E0e03kUp5X2k+UAoVl6efmI7uU7JRBWi5EIdlQ7cr0NpBGjHG4fWII35PgsBY9T4fJQ8E4QPsL0rKksU9gcL5A==",
"dependencies": { "dependencies": {
"System.Configuration.ConfigurationManager": "5.0.0" "System.Configuration.ConfigurationManager": "6.0.0"
} }
}, },
"System.Runtime.CompilerServices.Unsafe": { "System.Runtime.CompilerServices.Unsafe": {
@ -2776,11 +2752,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2790,7 +2765,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2799,7 +2774,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }
@ -2807,29 +2782,29 @@
"infrastructure.dapper": { "infrastructure.dapper": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Dapper": "[2.0.123, )" "Dapper": "[2.1.24, )"
} }
}, },
"infrastructure.entityframework": { "infrastructure.entityframework": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Relational": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )", "Microsoft.EntityFrameworkCore.SqlServer": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Sqlite": "[7.0.14, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.11, )",
"Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )", "Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )",
"linq2db.EntityFrameworkCore": "[7.5.0, )" "linq2db.EntityFrameworkCore": "[7.6.0, )"
} }
}, },
"sharedweb": { "sharedweb": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.Dapper": "[2023.10.2, )", "Infrastructure.Dapper": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
} }
} }

View File

@ -1,5 +1,6 @@
using Bit.Commercial.Core.AdminConsole.Services; using Bit.Commercial.Core.AdminConsole.Services;
using Bit.Commercial.Core.Test.AdminConsole.AutoFixture; using Bit.Commercial.Core.Test.AdminConsole.AutoFixture;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Entities.Provider; using Bit.Core.AdminConsole.Entities.Provider;
using Bit.Core.AdminConsole.Enums.Provider; using Bit.Core.AdminConsole.Enums.Provider;
using Bit.Core.AdminConsole.Models.Business.Provider; using Bit.Core.AdminConsole.Models.Business.Provider;

View File

@ -1,5 +1,5 @@
using Bit.Commercial.Core.SecretsManager.Queries.Projects; using Bit.Commercial.Core.SecretsManager.Queries.Projects;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Repositories; using Bit.Core.Repositories;

View File

@ -1,5 +1,5 @@
using Bit.Commercial.Core.SecretsManager.Queries.ServiceAccounts; using Bit.Commercial.Core.SecretsManager.Queries.ServiceAccounts;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.SecretsManager.Repositories; using Bit.Core.SecretsManager.Repositories;

View File

@ -239,6 +239,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fare": { "Fare": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.1", "resolved": "2.1.1",
@ -275,57 +293,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"Kralizek.AutoFixture.Extensions.MockHttp": { "Kralizek.AutoFixture.Extensions.MockHttp": {
"type": "Transitive", "type": "Transitive",
@ -343,26 +320,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -377,13 +355,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -411,10 +389,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -447,8 +425,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.Azure.Amqp": { "Microsoft.Azure.Amqp": {
"type": "Transitive", "type": "Transitive",
@ -1002,8 +980,8 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
"type": "Transitive", "type": "Transitive",
@ -1334,8 +1312,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -2679,7 +2657,7 @@
"commercial.core": { "commercial.core": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )" "Core": "[2023.12.0, )"
} }
}, },
"common": { "common": {
@ -2687,7 +2665,7 @@
"dependencies": { "dependencies": {
"AutoFixture.AutoNSubstitute": "[4.17.0, )", "AutoFixture.AutoNSubstitute": "[4.17.0, )",
"AutoFixture.Xunit2": "[4.17.0, )", "AutoFixture.Xunit2": "[4.17.0, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Kralizek.AutoFixture.Extensions.MockHttp": "[1.2.0, )", "Kralizek.AutoFixture.Extensions.MockHttp": "[1.2.0, )",
"Microsoft.NET.Test.Sdk": "[17.1.0, )", "Microsoft.NET.Test.Sdk": "[17.1.0, )",
"NSubstitute": "[4.3.0, )", "NSubstitute": "[4.3.0, )",
@ -2709,11 +2687,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2723,7 +2700,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2732,7 +2709,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }
@ -2742,8 +2719,8 @@
"dependencies": { "dependencies": {
"AutoFixture.AutoNSubstitute": "[4.17.0, )", "AutoFixture.AutoNSubstitute": "[4.17.0, )",
"AutoFixture.Xunit2": "[4.17.0, )", "AutoFixture.Xunit2": "[4.17.0, )",
"Common": "[2023.10.2, )", "Common": "[2023.12.0, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Kralizek.AutoFixture.Extensions.MockHttp": "[1.2.0, )", "Kralizek.AutoFixture.Extensions.MockHttp": "[1.2.0, )",
"Microsoft.NET.Test.Sdk": "[17.1.0, )", "Microsoft.NET.Test.Sdk": "[17.1.0, )",
"NSubstitute": "[4.3.0, )", "NSubstitute": "[4.3.0, )",

View File

@ -4,6 +4,7 @@ using System.Text;
using System.Text.Encodings.Web; using System.Text.Encodings.Web;
using System.Text.Json; using System.Text.Json;
using Bit.Core.Services; using Bit.Core.Services;
using Bit.Infrastructure.EntityFramework.AdminConsole.Models;
using Bit.Infrastructure.EntityFramework.Repositories; using Bit.Infrastructure.EntityFramework.Repositories;
using Bit.IntegrationTestCommon.Factories; using Bit.IntegrationTestCommon.Factories;
using Bit.Scim.Models; using Bit.Scim.Models;
@ -196,11 +197,11 @@ public class ScimApplicationFactory : WebApplicationFactoryBase<Startup>
}; };
} }
private List<Infrastructure.EntityFramework.Models.Organization> GetSeedingOrganizations() private List<Organization> GetSeedingOrganizations()
{ {
return new List<Infrastructure.EntityFramework.Models.Organization>() return new List<Organization>()
{ {
new Infrastructure.EntityFramework.Models.Organization { Id = TestOrganizationId1, Name = "Test Organization 1", UseGroups = true } new Organization { Id = TestOrganizationId1, Name = "Test Organization 1", UseGroups = true }
}; };
} }

View File

@ -271,8 +271,8 @@
}, },
"Dapper": { "Dapper": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.123", "resolved": "2.1.24",
"contentHash": "RDFF4rBLLmbpi6pwkY7q/M6UXHRJEOerplDGE5jwEkP/JGJnBauAClYavNKJPW1yOTWRPIyfj4is3EaJxQXILQ==" "contentHash": "/2t2vsdJyZRsk13AsWigZpsuFvEwK+o3v862cEULXoww905gyKhJFSuwmZI/4Ui9COX9ZCFCI09UHyH4wVYl3A=="
}, },
"DnsClient": { "DnsClient": {
"type": "Transitive", "type": "Transitive",
@ -282,6 +282,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fare": { "Fare": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.1", "resolved": "2.1.1",
@ -318,57 +336,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"Kralizek.AutoFixture.Extensions.MockHttp": { "Kralizek.AutoFixture.Extensions.MockHttp": {
"type": "Transitive", "type": "Transitive",
@ -386,26 +363,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -420,13 +398,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -438,16 +416,16 @@
}, },
"linq2db": { "linq2db": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.2.1", "resolved": "5.3.1",
"contentHash": "OOBM8s39zhbZAgqFnl2KGxT5RqBDw21X69U528qV2PgQispaA3f+or0ILrLEgnNIJuB4EBgaw8gC6ttSHn4X0Q==" "contentHash": "707mIbEmtptvKeUW940UwoNwq05I7OUu0VWtclLtyYaASp+ugX4I/Er1UVpeldsDawqlVMXB5EQ5/Oar6AkUGQ=="
}, },
"linq2db.EntityFrameworkCore": { "linq2db.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.5.0", "resolved": "7.6.0",
"contentHash": "ePHzO99xbObgMLlAFh08of1SnVhg6j4Su9327DrIB7RZWCgtQIX6k+nbl+HRVOooAndZSs7b+DduSgdnJjaJGw==", "contentHash": "T1W9o8wVzApsUwu7SRg/L7487kaiLQYt2AqRVnXVGfobD+ZKy2oRsUMws0PICtciaz4qbfLp/r/+NksfuYsFlw==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "7.0.0", "Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"linq2db": "5.2.1" "linq2db": "5.3.1"
} }
}, },
"MailKit": { "MailKit": {
@ -468,10 +446,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -504,8 +482,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.AspNetCore.TestHost": { "Microsoft.AspNetCore.TestHost": {
"type": "Transitive", "type": "Transitive",
@ -603,48 +581,44 @@
}, },
"Microsoft.Data.SqlClient": { "Microsoft.Data.SqlClient": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.1",
"contentHash": "uu8dfrsx081cSbEevWuZAvqdmANDGJkbLBL2G3j0LAZxX1Oy8RCVAaC4Lcuak6jNicWP6CWvHqBTIEmQNSxQlw==", "contentHash": "MW5E9HFvCaV069o8b6YpuRDPBux8s96qDnOJ+4N9QNUCs7c5W3KxwQ+ftpAjbMUlImL+c9WR+l+f5hzjkqhu2g==",
"dependencies": { "dependencies": {
"Azure.Identity": "1.6.0", "Azure.Identity": "1.7.0",
"Microsoft.Data.SqlClient.SNI.runtime": "5.0.1", "Microsoft.Data.SqlClient.SNI.runtime": "5.1.0",
"Microsoft.Identity.Client": "4.45.0", "Microsoft.Identity.Client": "4.47.2",
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.21.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.24.0",
"Microsoft.SqlServer.Server": "1.0.0", "Microsoft.SqlServer.Server": "1.0.0",
"Microsoft.Win32.Registry": "5.0.0", "System.Configuration.ConfigurationManager": "6.0.1",
"System.Buffers": "4.5.1", "System.Diagnostics.DiagnosticSource": "6.0.0",
"System.Configuration.ConfigurationManager": "5.0.0", "System.Runtime.Caching": "6.0.0",
"System.Diagnostics.DiagnosticSource": "5.0.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime.Caching": "5.0.0",
"System.Security.Cryptography.Cng": "5.0.0", "System.Security.Cryptography.Cng": "5.0.0",
"System.Security.Principal.Windows": "5.0.0", "System.Security.Principal.Windows": "5.0.0",
"System.Text.Encoding.CodePages": "5.0.0", "System.Text.Encoding.CodePages": "6.0.0",
"System.Text.Encodings.Web": "4.7.2" "System.Text.Encodings.Web": "6.0.0"
} }
}, },
"Microsoft.Data.SqlClient.SNI.runtime": { "Microsoft.Data.SqlClient.SNI.runtime": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "y0X5MxiNdbITJYoafJ2ruaX6hqO0twpCGR/ipiDOe85JKLU8WL4TuAQfDe5qtt3bND5Je26HnrarLSAMMnVTNg==" "contentHash": "jVsElisM5sfBzaaV9kdq2NXZLwIbytetnsOIlJ0cQGgQP4zFNBmkfHBnpwtmKrtBJBEV9+9PVQPVrcCVhDgcIg=="
}, },
"Microsoft.Data.Sqlite.Core": { "Microsoft.Data.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", "contentHash": "qvYae3/v9Fvqsjp/7OKQBuJK+Uc3m/WctfpIUMmGMDot2Bd8UWBKiMSlh26UtfQa9x4N+k7NxCT+AbZVoNrCdg==",
"dependencies": { "dependencies": {
"SQLitePCLRaw.core": "2.1.4" "SQLitePCLRaw.core": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore": { "Microsoft.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "contentHash": "0KYkAemPygW6yzifciFlmMzkO4sI4Dw69xLgwg3ui5rXJS5XvzuAWVvfdrKJciqeCbCnVS/ZbOWpcwWgqce5bQ==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.5", "Microsoft.EntityFrameworkCore.Abstractions": "7.0.14",
"Microsoft.EntityFrameworkCore.Analyzers": "7.0.5", "Microsoft.EntityFrameworkCore.Analyzers": "7.0.14",
"Microsoft.Extensions.Caching.Memory": "7.0.0", "Microsoft.Extensions.Caching.Memory": "7.0.0",
"Microsoft.Extensions.DependencyInjection": "7.0.0", "Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.Logging": "7.0.0" "Microsoft.Extensions.Logging": "7.0.0"
@ -652,49 +626,49 @@
}, },
"Microsoft.EntityFrameworkCore.Abstractions": { "Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "iwQso+hFRsEWjhH2WsEQj1D2QE5BlEXiXEt6A3SlYTPRPdZsyTNDeDDEdtxL+H/UJPQgQYY+9SMMRcEiXBmCAA==" "contentHash": "aEcXDSYpDdD5wdIRKTqcS44f3W4capqQ1BWVRPJgacATfHkO62RX9Nnh0hUFg+rei9OLuJp0Y4zsy1fNeOXv5g=="
}, },
"Microsoft.EntityFrameworkCore.Analyzers": { "Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "yMLM/aK1MikVqpjxd7PJ1Pjgztd3VAd26ZHxyjxG3RPeM9cHjvS5tCg9kAAayR6eHmBg0ffZsHdT28WfA5tTlA==" "contentHash": "esI4RF6mix4DDFBhWB9k1vJxAL8GouSf5ZV8oFJoVsIQ9d2J3MPgC1VL2qM9Vw5cH7Vg7TzRyKNpCRXFVkWs9w=="
}, },
"Microsoft.EntityFrameworkCore.Relational": { "Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "u/33DC4S6g2hpMPgBc5Kdnlz//nqHR5c/ovgjtiP/wQ7sOd0EOdygVzUJAAOxCwbtAHDsJXS9Vc3jLFYq0yu8Q==", "contentHash": "MrVBnWOFYwfLMGQfrcIuqEM9Xvokv1vJeYxqNH3K3xOtAdHwHQTrKnpDP97tU+LBlvcnyXAtAtryYcpLXWtRNA==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.5", "Microsoft.EntityFrameworkCore": "7.0.14",
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0" "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite": { "Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "2XPZB9OLF5/m13HgZp7/Dv0u8FWEJzcaBsMYR9Kp3R6aygkb3RnOijofPDTsmdhAqG9YTysCmh2bFaGs0TCc7A==", "contentHash": "8c8Hw2tmfy5YEsi9RL2/u2Qi9IwVbmj/yDlJy4iJPadeE3/AssLrgtobOBz4ftg2y5PVjFL59Gq7YzGLQH5q1A==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.5", "Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.14",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite.Core": { "Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "4C+9ct6A/Bq61Ta9Uh2td4/XwNpRCiPI03SWTa3hPJjA/g8wCw2hetbh3DDe5HcydzgDq/lRRjU/eRy3UODklQ==", "contentHash": "JNUkZVff1V/A/P3JiBbgt+Y2oCQSuzORxE3jOqFDbFjSFu7jHDEetJ/afSF/taa0lbyN9OpvaKjsbKk3Iis29Q==",
"dependencies": { "dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5", "Microsoft.Data.Sqlite.Core": "7.0.14",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5", "Microsoft.EntityFrameworkCore.Relational": "7.0.14",
"Microsoft.Extensions.DependencyModel": "7.0.0" "Microsoft.Extensions.DependencyModel": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.SqlServer": { "Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "cUJqCiamT0EvpKNgZEV5fqNv2MyVfKNgOPQfFINqHiIKHOYrS0nTCUJP97+UuG0JIIrP792/PwnuNjbekImtBg==", "contentHash": "d9hqEw4W/TdQ1WDm03uyFuDoehL6GNq/NMChFaC4dcV60I42vKdUC0fYTuE2QPunVUpf5XUTCkJ6fYGjMos2AA==",
"dependencies": { "dependencies": {
"Microsoft.Data.SqlClient": "5.0.1", "Microsoft.Data.SqlClient": "5.1.1",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5" "Microsoft.EntityFrameworkCore.Relational": "7.0.14"
} }
}, },
"Microsoft.Extensions.Caching.Abstractions": { "Microsoft.Extensions.Caching.Abstractions": {
@ -1048,50 +1022,52 @@
}, },
"Microsoft.IdentityModel.Abstractions": { "Microsoft.IdentityModel.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.22.0", "resolved": "6.24.0",
"contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==" "contentHash": "X6aBK56Ot15qKyG7X37KsPnrwah+Ka55NJWPppWVTDi8xWq7CJgeNw2XyaeHgE1o/mW4THwoabZkBbeG2TPBiw=="
}, },
"Microsoft.IdentityModel.JsonWebTokens": { "Microsoft.IdentityModel.JsonWebTokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "d3h1/BaMeylKTkdP6XwRCxuOoDJZ44V9xaXr6gl5QxmpnZGdoK3bySo3OQN8ehRLJHShb94ElLUvoXyglQtgAw==", "contentHash": "XDWrkThcxfuWp79AvAtg5f+uRS1BxkIbJnsG/e8VPzOWkYYuDg33emLjp5EWcwXYYIDsHnVZD/00kM/PYFQc/g==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Json": "4.7.2"
} }
}, },
"Microsoft.IdentityModel.Logging": { "Microsoft.IdentityModel.Logging": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "tuEhHIQwvBEhMf8I50hy8FHmRSUkffDFP5EdLsSDV4qRcl2wvOPkQxYqEzWkh+ytW6sbdJGEXElGhmhDfAxAKg==", "contentHash": "qLYWDOowM/zghmYKXw1yfYKlHOdS41i8t4hVXr9bSI90zHqhyhQh9GwVy8pENzs5wHeytU23DymluC9NtgYv7w==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Abstractions": "6.21.0" "Microsoft.IdentityModel.Abstractions": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols": { "Microsoft.IdentityModel.Protocols": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "0FqY5cTLQKtHrClzHEI+QxJl8OBT2vUiEQQB7UKk832JDiJJmetzYZ3AdSrPjN/3l3nkhByeWzXnhrX0JbifKg==", "contentHash": "+NzKCkvsQ8X1r/Ff74V7CFr9OsdMRaB6DsV+qpH7NNLdYJ8O4qHbmTnNEsjFcDmk/gVNDwhoL2gN5pkPVq0lwQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols.OpenIdConnect": { "Microsoft.IdentityModel.Protocols.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "vtSKL7n6EnAsLyxmiviusm6LKrblT2ndnNqN6rvVq6iIHAnPCK9E2DkDx6h1Jrpy1cvbp40r0cnTg23nhEAGTA==", "contentHash": "a/2RRrc8C9qaw8qdD9hv1ES9YKFgxaqr/SnwMSLbwQZJSUQDd4qx1K4EYgWaQWs73R+VXLyKSxN0f/uE9CsBiQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols": "6.21.0", "Microsoft.IdentityModel.Protocols": "6.24.0",
"System.IdentityModel.Tokens.Jwt": "6.21.0" "System.IdentityModel.Tokens.Jwt": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Tokens": { "Microsoft.IdentityModel.Tokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "AAEHZvZyb597a+QJSmtxH3n2P1nIJGpZ4Q89GTenknRx6T6zyfzf592yW/jA5e8EHN4tNMjjXHQaYWEq5+L05w==", "contentHash": "ZPqHi86UYuqJXJ7bLnlEctHKkPKT4lGUFbotoCNiXNCSL02emYlcxzGYsRGWWmbFEcYDMi2dcTLLYNzHqWOTsw==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.5.0", "Microsoft.CSharp": "4.5.0",
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"System.Security.Cryptography.Cng": "4.5.0" "System.Security.Cryptography.Cng": "4.5.0"
} }
}, },
@ -1245,13 +1221,13 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"Npgsql": { "Npgsql": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.6",
"contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", "contentHash": "TAqvwRnm3NJ0QvN7cvu6geJkbI0XPzGVRElVY5hF4gsgA+BnE12x6GM1TLhdeq+7ZKvvo3BD8jXKnXmr3tvdEw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "6.0.0", "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0" "System.Runtime.CompilerServices.Unsafe": "6.0.0"
@ -1259,13 +1235,13 @@
}, },
"Npgsql.EntityFrameworkCore.PostgreSQL": { "Npgsql.EntityFrameworkCore.PostgreSQL": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.11",
"contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", "contentHash": "cHEgEz0ldXc9wVANs8sJqC+3eilqefrkasCBgaVT0tyj8tb1p3/pwy2ngjboNkDG3M0z+xJsJ4jC5p8wySAM3w==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Relational": "[7.0.11, 8.0.0)",
"Npgsql": "7.0.4" "Npgsql": "7.0.6"
} }
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
@ -1598,8 +1574,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -1806,8 +1782,8 @@
}, },
"System.Configuration.ConfigurationManager": { "System.Configuration.ConfigurationManager": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.0.1",
"contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==",
"dependencies": { "dependencies": {
"System.Security.Cryptography.ProtectedData": "6.0.0", "System.Security.Cryptography.ProtectedData": "6.0.0",
"System.Security.Permissions": "6.0.0" "System.Security.Permissions": "6.0.0"
@ -1970,11 +1946,11 @@
}, },
"System.IdentityModel.Tokens.Jwt": { "System.IdentityModel.Tokens.Jwt": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "JRD8AuypBE+2zYxT3dMJomQVsPYsCqlyZhWel3J1d5nzQokSRyTueF+Q4ID3Jcu6zSZKuzOdJ1MLTkbQsDqcvQ==", "contentHash": "Qibsj9MPWq8S/C0FgvmsLfIlHLE7ay0MJIaAmK94ivN3VyDdglqReed5qMvdQhSL0BzK6v0Z1wB/sD88zVu6Jw==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"System.IO": { "System.IO": {
@ -2428,10 +2404,10 @@
}, },
"System.Runtime.Caching": { "System.Runtime.Caching": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "6.0.0",
"contentHash": "30D6MkO8WF9jVGWZIP0hmCN8l9BTY4LCsAzLIe4xFSXzs+AjDotR7DpSmj27pFskDURzUvqYYY0ikModgBTxWw==", "contentHash": "E0e03kUp5X2k+UAoVl6efmI7uU7JRBWi5EIdlQ7cr0NpBGjHG4fWII35PgsBY9T4fJQ8E4QPsL0rKksU9gcL5A==",
"dependencies": { "dependencies": {
"System.Configuration.ConfigurationManager": "5.0.0" "System.Configuration.ConfigurationManager": "6.0.0"
} }
}, },
"System.Runtime.CompilerServices.Unsafe": { "System.Runtime.CompilerServices.Unsafe": {
@ -2996,7 +2972,7 @@
"dependencies": { "dependencies": {
"AutoFixture.AutoNSubstitute": "[4.17.0, )", "AutoFixture.AutoNSubstitute": "[4.17.0, )",
"AutoFixture.Xunit2": "[4.17.0, )", "AutoFixture.Xunit2": "[4.17.0, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Kralizek.AutoFixture.Extensions.MockHttp": "[1.2.0, )", "Kralizek.AutoFixture.Extensions.MockHttp": "[1.2.0, )",
"Microsoft.NET.Test.Sdk": "[17.1.0, )", "Microsoft.NET.Test.Sdk": "[17.1.0, )",
"NSubstitute": "[4.3.0, )", "NSubstitute": "[4.3.0, )",
@ -3018,11 +2994,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -3032,7 +3007,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -3041,7 +3016,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }
@ -3049,36 +3024,36 @@
"identity": { "identity": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"SharedWeb": "[2023.10.2, )", "SharedWeb": "[2023.12.0, )",
"Swashbuckle.AspNetCore.SwaggerGen": "[6.5.0, )" "Swashbuckle.AspNetCore.SwaggerGen": "[6.5.0, )"
} }
}, },
"infrastructure.dapper": { "infrastructure.dapper": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Dapper": "[2.0.123, )" "Dapper": "[2.1.24, )"
} }
}, },
"infrastructure.entityframework": { "infrastructure.entityframework": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Relational": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )", "Microsoft.EntityFrameworkCore.SqlServer": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Sqlite": "[7.0.14, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.11, )",
"Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )", "Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )",
"linq2db.EntityFrameworkCore": "[7.5.0, )" "linq2db.EntityFrameworkCore": "[7.6.0, )"
} }
}, },
"integrationtestcommon": { "integrationtestcommon": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Common": "[2023.10.2, )", "Common": "[2023.12.0, )",
"Identity": "[2023.10.2, )", "Identity": "[2023.12.0, )",
"Microsoft.AspNetCore.Mvc.Testing": "[6.0.5, )", "Microsoft.AspNetCore.Mvc.Testing": "[6.0.5, )",
"Microsoft.Extensions.Configuration": "[6.0.1, )" "Microsoft.Extensions.Configuration": "[6.0.1, )"
} }
@ -3086,16 +3061,16 @@
"scim": { "scim": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"SharedWeb": "[2023.10.2, )" "SharedWeb": "[2023.12.0, )"
} }
}, },
"sharedweb": { "sharedweb": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.Dapper": "[2023.10.2, )", "Infrastructure.Dapper": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
} }
} }

View File

@ -3,7 +3,6 @@ using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.AdminConsole.Services; using Bit.Core.AdminConsole.Services;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Scim.Groups; using Bit.Scim.Groups;

View File

@ -2,7 +2,6 @@
using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Scim.Context; using Bit.Scim.Context;

View File

@ -2,7 +2,6 @@
using Bit.Core.AdminConsole.Enums; using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.Groups.Interfaces;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Scim.Context; using Bit.Scim.Context;

View File

@ -259,8 +259,8 @@
}, },
"Dapper": { "Dapper": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.123", "resolved": "2.1.24",
"contentHash": "RDFF4rBLLmbpi6pwkY7q/M6UXHRJEOerplDGE5jwEkP/JGJnBauAClYavNKJPW1yOTWRPIyfj4is3EaJxQXILQ==" "contentHash": "/2t2vsdJyZRsk13AsWigZpsuFvEwK+o3v862cEULXoww905gyKhJFSuwmZI/4Ui9COX9ZCFCI09UHyH4wVYl3A=="
}, },
"DnsClient": { "DnsClient": {
"type": "Transitive", "type": "Transitive",
@ -270,6 +270,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fare": { "Fare": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.1", "resolved": "2.1.1",
@ -306,57 +324,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"Kralizek.AutoFixture.Extensions.MockHttp": { "Kralizek.AutoFixture.Extensions.MockHttp": {
"type": "Transitive", "type": "Transitive",
@ -374,26 +351,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -408,13 +386,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -426,16 +404,16 @@
}, },
"linq2db": { "linq2db": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.2.1", "resolved": "5.3.1",
"contentHash": "OOBM8s39zhbZAgqFnl2KGxT5RqBDw21X69U528qV2PgQispaA3f+or0ILrLEgnNIJuB4EBgaw8gC6ttSHn4X0Q==" "contentHash": "707mIbEmtptvKeUW940UwoNwq05I7OUu0VWtclLtyYaASp+ugX4I/Er1UVpeldsDawqlVMXB5EQ5/Oar6AkUGQ=="
}, },
"linq2db.EntityFrameworkCore": { "linq2db.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.5.0", "resolved": "7.6.0",
"contentHash": "ePHzO99xbObgMLlAFh08of1SnVhg6j4Su9327DrIB7RZWCgtQIX6k+nbl+HRVOooAndZSs7b+DduSgdnJjaJGw==", "contentHash": "T1W9o8wVzApsUwu7SRg/L7487kaiLQYt2AqRVnXVGfobD+ZKy2oRsUMws0PICtciaz4qbfLp/r/+NksfuYsFlw==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "7.0.0", "Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"linq2db": "5.2.1" "linq2db": "5.3.1"
} }
}, },
"MailKit": { "MailKit": {
@ -456,10 +434,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -492,8 +470,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.Azure.Amqp": { "Microsoft.Azure.Amqp": {
"type": "Transitive", "type": "Transitive",
@ -583,48 +561,44 @@
}, },
"Microsoft.Data.SqlClient": { "Microsoft.Data.SqlClient": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.1",
"contentHash": "uu8dfrsx081cSbEevWuZAvqdmANDGJkbLBL2G3j0LAZxX1Oy8RCVAaC4Lcuak6jNicWP6CWvHqBTIEmQNSxQlw==", "contentHash": "MW5E9HFvCaV069o8b6YpuRDPBux8s96qDnOJ+4N9QNUCs7c5W3KxwQ+ftpAjbMUlImL+c9WR+l+f5hzjkqhu2g==",
"dependencies": { "dependencies": {
"Azure.Identity": "1.6.0", "Azure.Identity": "1.7.0",
"Microsoft.Data.SqlClient.SNI.runtime": "5.0.1", "Microsoft.Data.SqlClient.SNI.runtime": "5.1.0",
"Microsoft.Identity.Client": "4.45.0", "Microsoft.Identity.Client": "4.47.2",
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.21.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.24.0",
"Microsoft.SqlServer.Server": "1.0.0", "Microsoft.SqlServer.Server": "1.0.0",
"Microsoft.Win32.Registry": "5.0.0", "System.Configuration.ConfigurationManager": "6.0.1",
"System.Buffers": "4.5.1", "System.Diagnostics.DiagnosticSource": "6.0.0",
"System.Configuration.ConfigurationManager": "5.0.0", "System.Runtime.Caching": "6.0.0",
"System.Diagnostics.DiagnosticSource": "5.0.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime.Caching": "5.0.0",
"System.Security.Cryptography.Cng": "5.0.0", "System.Security.Cryptography.Cng": "5.0.0",
"System.Security.Principal.Windows": "5.0.0", "System.Security.Principal.Windows": "5.0.0",
"System.Text.Encoding.CodePages": "5.0.0", "System.Text.Encoding.CodePages": "6.0.0",
"System.Text.Encodings.Web": "4.7.2" "System.Text.Encodings.Web": "6.0.0"
} }
}, },
"Microsoft.Data.SqlClient.SNI.runtime": { "Microsoft.Data.SqlClient.SNI.runtime": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "y0X5MxiNdbITJYoafJ2ruaX6hqO0twpCGR/ipiDOe85JKLU8WL4TuAQfDe5qtt3bND5Je26HnrarLSAMMnVTNg==" "contentHash": "jVsElisM5sfBzaaV9kdq2NXZLwIbytetnsOIlJ0cQGgQP4zFNBmkfHBnpwtmKrtBJBEV9+9PVQPVrcCVhDgcIg=="
}, },
"Microsoft.Data.Sqlite.Core": { "Microsoft.Data.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", "contentHash": "qvYae3/v9Fvqsjp/7OKQBuJK+Uc3m/WctfpIUMmGMDot2Bd8UWBKiMSlh26UtfQa9x4N+k7NxCT+AbZVoNrCdg==",
"dependencies": { "dependencies": {
"SQLitePCLRaw.core": "2.1.4" "SQLitePCLRaw.core": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore": { "Microsoft.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "contentHash": "0KYkAemPygW6yzifciFlmMzkO4sI4Dw69xLgwg3ui5rXJS5XvzuAWVvfdrKJciqeCbCnVS/ZbOWpcwWgqce5bQ==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.5", "Microsoft.EntityFrameworkCore.Abstractions": "7.0.14",
"Microsoft.EntityFrameworkCore.Analyzers": "7.0.5", "Microsoft.EntityFrameworkCore.Analyzers": "7.0.14",
"Microsoft.Extensions.Caching.Memory": "7.0.0", "Microsoft.Extensions.Caching.Memory": "7.0.0",
"Microsoft.Extensions.DependencyInjection": "7.0.0", "Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.Logging": "7.0.0" "Microsoft.Extensions.Logging": "7.0.0"
@ -632,49 +606,49 @@
}, },
"Microsoft.EntityFrameworkCore.Abstractions": { "Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "iwQso+hFRsEWjhH2WsEQj1D2QE5BlEXiXEt6A3SlYTPRPdZsyTNDeDDEdtxL+H/UJPQgQYY+9SMMRcEiXBmCAA==" "contentHash": "aEcXDSYpDdD5wdIRKTqcS44f3W4capqQ1BWVRPJgacATfHkO62RX9Nnh0hUFg+rei9OLuJp0Y4zsy1fNeOXv5g=="
}, },
"Microsoft.EntityFrameworkCore.Analyzers": { "Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "yMLM/aK1MikVqpjxd7PJ1Pjgztd3VAd26ZHxyjxG3RPeM9cHjvS5tCg9kAAayR6eHmBg0ffZsHdT28WfA5tTlA==" "contentHash": "esI4RF6mix4DDFBhWB9k1vJxAL8GouSf5ZV8oFJoVsIQ9d2J3MPgC1VL2qM9Vw5cH7Vg7TzRyKNpCRXFVkWs9w=="
}, },
"Microsoft.EntityFrameworkCore.Relational": { "Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "u/33DC4S6g2hpMPgBc5Kdnlz//nqHR5c/ovgjtiP/wQ7sOd0EOdygVzUJAAOxCwbtAHDsJXS9Vc3jLFYq0yu8Q==", "contentHash": "MrVBnWOFYwfLMGQfrcIuqEM9Xvokv1vJeYxqNH3K3xOtAdHwHQTrKnpDP97tU+LBlvcnyXAtAtryYcpLXWtRNA==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.5", "Microsoft.EntityFrameworkCore": "7.0.14",
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0" "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite": { "Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "2XPZB9OLF5/m13HgZp7/Dv0u8FWEJzcaBsMYR9Kp3R6aygkb3RnOijofPDTsmdhAqG9YTysCmh2bFaGs0TCc7A==", "contentHash": "8c8Hw2tmfy5YEsi9RL2/u2Qi9IwVbmj/yDlJy4iJPadeE3/AssLrgtobOBz4ftg2y5PVjFL59Gq7YzGLQH5q1A==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.5", "Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.14",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite.Core": { "Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "4C+9ct6A/Bq61Ta9Uh2td4/XwNpRCiPI03SWTa3hPJjA/g8wCw2hetbh3DDe5HcydzgDq/lRRjU/eRy3UODklQ==", "contentHash": "JNUkZVff1V/A/P3JiBbgt+Y2oCQSuzORxE3jOqFDbFjSFu7jHDEetJ/afSF/taa0lbyN9OpvaKjsbKk3Iis29Q==",
"dependencies": { "dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5", "Microsoft.Data.Sqlite.Core": "7.0.14",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5", "Microsoft.EntityFrameworkCore.Relational": "7.0.14",
"Microsoft.Extensions.DependencyModel": "7.0.0" "Microsoft.Extensions.DependencyModel": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.SqlServer": { "Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "cUJqCiamT0EvpKNgZEV5fqNv2MyVfKNgOPQfFINqHiIKHOYrS0nTCUJP97+UuG0JIIrP792/PwnuNjbekImtBg==", "contentHash": "d9hqEw4W/TdQ1WDm03uyFuDoehL6GNq/NMChFaC4dcV60I42vKdUC0fYTuE2QPunVUpf5XUTCkJ6fYGjMos2AA==",
"dependencies": { "dependencies": {
"Microsoft.Data.SqlClient": "5.0.1", "Microsoft.Data.SqlClient": "5.1.1",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5" "Microsoft.EntityFrameworkCore.Relational": "7.0.14"
} }
}, },
"Microsoft.Extensions.Caching.Abstractions": { "Microsoft.Extensions.Caching.Abstractions": {
@ -927,50 +901,52 @@
}, },
"Microsoft.IdentityModel.Abstractions": { "Microsoft.IdentityModel.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.22.0", "resolved": "6.24.0",
"contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==" "contentHash": "X6aBK56Ot15qKyG7X37KsPnrwah+Ka55NJWPppWVTDi8xWq7CJgeNw2XyaeHgE1o/mW4THwoabZkBbeG2TPBiw=="
}, },
"Microsoft.IdentityModel.JsonWebTokens": { "Microsoft.IdentityModel.JsonWebTokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "d3h1/BaMeylKTkdP6XwRCxuOoDJZ44V9xaXr6gl5QxmpnZGdoK3bySo3OQN8ehRLJHShb94ElLUvoXyglQtgAw==", "contentHash": "XDWrkThcxfuWp79AvAtg5f+uRS1BxkIbJnsG/e8VPzOWkYYuDg33emLjp5EWcwXYYIDsHnVZD/00kM/PYFQc/g==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Json": "4.7.2"
} }
}, },
"Microsoft.IdentityModel.Logging": { "Microsoft.IdentityModel.Logging": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "tuEhHIQwvBEhMf8I50hy8FHmRSUkffDFP5EdLsSDV4qRcl2wvOPkQxYqEzWkh+ytW6sbdJGEXElGhmhDfAxAKg==", "contentHash": "qLYWDOowM/zghmYKXw1yfYKlHOdS41i8t4hVXr9bSI90zHqhyhQh9GwVy8pENzs5wHeytU23DymluC9NtgYv7w==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Abstractions": "6.21.0" "Microsoft.IdentityModel.Abstractions": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols": { "Microsoft.IdentityModel.Protocols": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "0FqY5cTLQKtHrClzHEI+QxJl8OBT2vUiEQQB7UKk832JDiJJmetzYZ3AdSrPjN/3l3nkhByeWzXnhrX0JbifKg==", "contentHash": "+NzKCkvsQ8X1r/Ff74V7CFr9OsdMRaB6DsV+qpH7NNLdYJ8O4qHbmTnNEsjFcDmk/gVNDwhoL2gN5pkPVq0lwQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols.OpenIdConnect": { "Microsoft.IdentityModel.Protocols.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "vtSKL7n6EnAsLyxmiviusm6LKrblT2ndnNqN6rvVq6iIHAnPCK9E2DkDx6h1Jrpy1cvbp40r0cnTg23nhEAGTA==", "contentHash": "a/2RRrc8C9qaw8qdD9hv1ES9YKFgxaqr/SnwMSLbwQZJSUQDd4qx1K4EYgWaQWs73R+VXLyKSxN0f/uE9CsBiQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols": "6.21.0", "Microsoft.IdentityModel.Protocols": "6.24.0",
"System.IdentityModel.Tokens.Jwt": "6.21.0" "System.IdentityModel.Tokens.Jwt": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Tokens": { "Microsoft.IdentityModel.Tokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "AAEHZvZyb597a+QJSmtxH3n2P1nIJGpZ4Q89GTenknRx6T6zyfzf592yW/jA5e8EHN4tNMjjXHQaYWEq5+L05w==", "contentHash": "ZPqHi86UYuqJXJ7bLnlEctHKkPKT4lGUFbotoCNiXNCSL02emYlcxzGYsRGWWmbFEcYDMi2dcTLLYNzHqWOTsw==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.5.0", "Microsoft.CSharp": "4.5.0",
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"System.Security.Cryptography.Cng": "4.5.0" "System.Security.Cryptography.Cng": "4.5.0"
} }
}, },
@ -1119,13 +1095,13 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"Npgsql": { "Npgsql": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.6",
"contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", "contentHash": "TAqvwRnm3NJ0QvN7cvu6geJkbI0XPzGVRElVY5hF4gsgA+BnE12x6GM1TLhdeq+7ZKvvo3BD8jXKnXmr3tvdEw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "6.0.0", "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0" "System.Runtime.CompilerServices.Unsafe": "6.0.0"
@ -1133,13 +1109,13 @@
}, },
"Npgsql.EntityFrameworkCore.PostgreSQL": { "Npgsql.EntityFrameworkCore.PostgreSQL": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.11",
"contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", "contentHash": "cHEgEz0ldXc9wVANs8sJqC+3eilqefrkasCBgaVT0tyj8tb1p3/pwy2ngjboNkDG3M0z+xJsJ4jC5p8wySAM3w==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Relational": "[7.0.11, 8.0.0)",
"Npgsql": "7.0.4" "Npgsql": "7.0.6"
} }
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
@ -1472,8 +1448,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -1664,8 +1640,8 @@
}, },
"System.Configuration.ConfigurationManager": { "System.Configuration.ConfigurationManager": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.0.1",
"contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==",
"dependencies": { "dependencies": {
"System.Security.Cryptography.ProtectedData": "6.0.0", "System.Security.Cryptography.ProtectedData": "6.0.0",
"System.Security.Permissions": "6.0.0" "System.Security.Permissions": "6.0.0"
@ -1823,11 +1799,11 @@
}, },
"System.IdentityModel.Tokens.Jwt": { "System.IdentityModel.Tokens.Jwt": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "JRD8AuypBE+2zYxT3dMJomQVsPYsCqlyZhWel3J1d5nzQokSRyTueF+Q4ID3Jcu6zSZKuzOdJ1MLTkbQsDqcvQ==", "contentHash": "Qibsj9MPWq8S/C0FgvmsLfIlHLE7ay0MJIaAmK94ivN3VyDdglqReed5qMvdQhSL0BzK6v0Z1wB/sD88zVu6Jw==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"System.IO": { "System.IO": {
@ -2281,10 +2257,10 @@
}, },
"System.Runtime.Caching": { "System.Runtime.Caching": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "6.0.0",
"contentHash": "30D6MkO8WF9jVGWZIP0hmCN8l9BTY4LCsAzLIe4xFSXzs+AjDotR7DpSmj27pFskDURzUvqYYY0ikModgBTxWw==", "contentHash": "E0e03kUp5X2k+UAoVl6efmI7uU7JRBWi5EIdlQ7cr0NpBGjHG4fWII35PgsBY9T4fJQ8E4QPsL0rKksU9gcL5A==",
"dependencies": { "dependencies": {
"System.Configuration.ConfigurationManager": "5.0.0" "System.Configuration.ConfigurationManager": "6.0.0"
} }
}, },
"System.Runtime.CompilerServices.Unsafe": { "System.Runtime.CompilerServices.Unsafe": {
@ -2849,7 +2825,7 @@
"dependencies": { "dependencies": {
"AutoFixture.AutoNSubstitute": "[4.17.0, )", "AutoFixture.AutoNSubstitute": "[4.17.0, )",
"AutoFixture.Xunit2": "[4.17.0, )", "AutoFixture.Xunit2": "[4.17.0, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Kralizek.AutoFixture.Extensions.MockHttp": "[1.2.0, )", "Kralizek.AutoFixture.Extensions.MockHttp": "[1.2.0, )",
"Microsoft.NET.Test.Sdk": "[17.1.0, )", "Microsoft.NET.Test.Sdk": "[17.1.0, )",
"NSubstitute": "[4.3.0, )", "NSubstitute": "[4.3.0, )",
@ -2871,11 +2847,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2885,7 +2860,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2894,7 +2869,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }
@ -2902,36 +2877,36 @@
"infrastructure.dapper": { "infrastructure.dapper": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Dapper": "[2.0.123, )" "Dapper": "[2.1.24, )"
} }
}, },
"infrastructure.entityframework": { "infrastructure.entityframework": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Relational": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )", "Microsoft.EntityFrameworkCore.SqlServer": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Sqlite": "[7.0.14, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.11, )",
"Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )", "Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )",
"linq2db.EntityFrameworkCore": "[7.5.0, )" "linq2db.EntityFrameworkCore": "[7.6.0, )"
} }
}, },
"scim": { "scim": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"SharedWeb": "[2023.10.2, )" "SharedWeb": "[2023.12.0, )"
} }
}, },
"sharedweb": { "sharedweb": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.Dapper": "[2023.10.2, )", "Infrastructure.Dapper": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"sdk": { "sdk": {
"version": "6.0.415", "version": "6.0.100",
"rollForward": "latestFeature" "rollForward": "latestFeature"
} }
} }

View File

@ -8,7 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.2" /> <PackageReference Include="BenchmarkDotNet" Version="0.13.10" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -4,22 +4,20 @@
"net6.0": { "net6.0": {
"BenchmarkDotNet": { "BenchmarkDotNet": {
"type": "Direct", "type": "Direct",
"requested": "[0.13.2, )", "requested": "[0.13.10, )",
"resolved": "0.13.2", "resolved": "0.13.10",
"contentHash": "82IflYxY8qnQXEA3kXtqC9pntrkJYJZbQ9PV7hEV/XcfCtOdwLz84ilyO8tLRVbiliWttvmt/v44P+visN+fPQ==", "contentHash": "p/LrTtR5TlwhZIvy2hG9VzTFWEDPS90r3QP9Q9pL4/B1iXzC/JNrpYyCWW3Xeg4vuiq/qV8hvJkJmT1sj+5LSw==",
"dependencies": { "dependencies": {
"BenchmarkDotNet.Annotations": "0.13.2", "BenchmarkDotNet.Annotations": "0.13.10",
"CommandLineParser": "2.4.3", "CommandLineParser": "2.9.1",
"Gee.External.Capstone": "2.3.0",
"Iced": "1.17.0", "Iced": "1.17.0",
"Microsoft.CodeAnalysis.CSharp": "3.0.0", "Microsoft.CodeAnalysis.CSharp": "4.1.0",
"Microsoft.Diagnostics.Runtime": "2.2.332302", "Microsoft.Diagnostics.Runtime": "2.2.332302",
"Microsoft.Diagnostics.Tracing.TraceEvent": "3.0.2", "Microsoft.Diagnostics.Tracing.TraceEvent": "3.0.2",
"Microsoft.DotNet.PlatformAbstractions": "3.1.6", "Microsoft.DotNet.PlatformAbstractions": "3.1.6",
"Perfolizer": "0.2.1", "Perfolizer": "[0.2.1]",
"System.Management": "6.0.0", "System.Management": "5.0.0"
"System.Reflection.Emit": "4.7.0",
"System.Reflection.Emit.Lightweight": "4.7.0",
"System.Threading.Tasks.Extensions": "4.5.4"
} }
}, },
"AspNetCoreRateLimit": { "AspNetCoreRateLimit": {
@ -153,8 +151,8 @@
}, },
"BenchmarkDotNet.Annotations": { "BenchmarkDotNet.Annotations": {
"type": "Transitive", "type": "Transitive",
"resolved": "0.13.2", "resolved": "0.13.10",
"contentHash": "+SGOYyXT6fiagbtrni38B8BqBgjruYKU3PfROI0lDIYo8jQ+APUmLKMEswK7zwR5fEOCrDmoAHSH6oykBkqPgA==" "contentHash": "abYKp+P5NBuam7q0w7AFgOYF3nqAvKBw6MLq96Kjk1WdaRDNpgBc6uCgOP4pVIH/g0IF9d4ubnFLBwiJuIAHMw=="
}, },
"BitPay.Light": { "BitPay.Light": {
"type": "Transitive", "type": "Transitive",
@ -181,8 +179,8 @@
}, },
"CommandLineParser": { "CommandLineParser": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.4.3", "resolved": "2.9.1",
"contentHash": "U2FC9Y8NyIxxU6MpFFdWWu1xwiqz/61v/Doou7kmVjpeIEMLWyiNNkzNlSE84kyJ0O1LKApuEj5z48Ow0Hi4OQ==" "contentHash": "OE0sl1/sQ37bjVsPKKtwQlWDgqaxWgtme3xZz7JssWUzg5JpMIyHgCTY9MVMxOg48fJ1AgGT3tgdH5m/kQ5xhA=="
}, },
"DnsClient": { "DnsClient": {
"type": "Transitive", "type": "Transitive",
@ -192,6 +190,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fido2": { "Fido2": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.1", "resolved": "3.0.1",
@ -218,10 +234,15 @@
"resolved": "3.0.1", "resolved": "3.0.1",
"contentHash": "mgjcuGETuYSCUEaZG+jQeeuuEMkDLc4GDJHBvKDdOz6oSOWp5adPdWP4btZx7Pi+9fu4szN3JIjJmby67MaILw==" "contentHash": "mgjcuGETuYSCUEaZG+jQeeuuEMkDLc4GDJHBvKDdOz6oSOWp5adPdWP4btZx7Pi+9fu4szN3JIjJmby67MaILw=="
}, },
"Gee.External.Capstone": {
"type": "Transitive",
"resolved": "2.3.0",
"contentHash": "2ap/rYmjtzCOT8hxrnEW/QeiOt+paD8iRrIcdKX0cxVwWLFa1e+JDBNeECakmccXrSFeBQuu5AV8SNkipFMMMw=="
},
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
@ -233,49 +254,8 @@
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"LaunchDarkly.Cache": { "LaunchDarkly.Cache": {
"type": "Transitive", "type": "Transitive",
@ -284,26 +264,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -318,13 +299,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -352,10 +333,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -388,8 +369,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.Azure.Amqp": { "Microsoft.Azure.Amqp": {
"type": "Transitive", "type": "Transitive",
@ -469,29 +450,29 @@
}, },
"Microsoft.CodeAnalysis.Analyzers": { "Microsoft.CodeAnalysis.Analyzers": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.6.2-beta2", "resolved": "3.3.3",
"contentHash": "rg5Ql73AmGCMG5Q40Kzbndq7C7S4XvsJA+2QXfZBCy2dRqD+a7BSbx/3942EoRUJ/8Wh9+kLg2G2qC46o3f1Aw==" "contentHash": "j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ=="
}, },
"Microsoft.CodeAnalysis.Common": { "Microsoft.CodeAnalysis.Common": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.0", "resolved": "4.1.0",
"contentHash": "HEnLZ9Op5IoXeuokhfSLIXstXfEyPzXhQ/xsnvUmxzb+7YpwuLk57txArzGs/Wne5bWmU7Uey4Q1jUZ3++heqg==", "contentHash": "bNzTyxP3iD5FPFHfVDl15Y6/wSoI7e3MeV0lOaj9igbIKTjgrmuw6LoVJ06jUNFA7+KaDC/OIsStWl/FQJz6sQ==",
"dependencies": { "dependencies": {
"Microsoft.CodeAnalysis.Analyzers": "2.6.2-beta2", "Microsoft.CodeAnalysis.Analyzers": "3.3.3",
"System.Collections.Immutable": "1.5.0", "System.Collections.Immutable": "5.0.0",
"System.Memory": "4.5.1", "System.Memory": "4.5.4",
"System.Reflection.Metadata": "1.6.0", "System.Reflection.Metadata": "5.0.0",
"System.Runtime.CompilerServices.Unsafe": "4.5.0", "System.Runtime.CompilerServices.Unsafe": "5.0.0",
"System.Text.Encoding.CodePages": "4.5.0", "System.Text.Encoding.CodePages": "4.5.1",
"System.Threading.Tasks.Extensions": "4.5.0" "System.Threading.Tasks.Extensions": "4.5.4"
} }
}, },
"Microsoft.CodeAnalysis.CSharp": { "Microsoft.CodeAnalysis.CSharp": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.0", "resolved": "4.1.0",
"contentHash": "hWFUxc0iUbVvIKWJODErOeOa5GiqZuEcetxaCfHqZ04zHy0ZCLx3v4/TdF/6Erx1mXPHfoT2Tiz5rZCQZ6OyxQ==", "contentHash": "sbu6kDGzo9bfQxuqWpeEE7I9P30bSuZEnpDz9/qz20OU6pm79Z63+/BsAzO2e/R/Q97kBrpj647wokZnEVr97w==",
"dependencies": { "dependencies": {
"Microsoft.CodeAnalysis.Common": "[3.0.0]" "Microsoft.CodeAnalysis.Common": "[4.1.0]"
} }
}, },
"Microsoft.CSharp": { "Microsoft.CSharp": {
@ -979,8 +960,8 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
"type": "Transitive", "type": "Transitive",
@ -1301,8 +1282,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -1346,8 +1327,8 @@
}, },
"System.CodeDom": { "System.CodeDom": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "5.0.0",
"contentHash": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==" "contentHash": "JPJArwA1kdj8qDAkY2XGjSWoYnqiM7q/3yRNkt6n28Mnn95MuEGkZXUbPBf7qc3IjwrGY5ttQon7yqHZyQJmOQ=="
}, },
"System.Collections": { "System.Collections": {
"type": "Transitive", "type": "Transitive",
@ -1722,10 +1703,12 @@
}, },
"System.Management": { "System.Management": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "5.0.0",
"contentHash": "sHsESYMmPDhQuOC66h6AEOs/XowzKsbT9srMbX71TCXP58hkpn1BqBjdmKj1+DCA/WlBETX1K5WjQHwmV0Txrg==", "contentHash": "MF1CHaRcC+MLFdnDthv4/bKWBZnlnSpkGqa87pKukQefgEdwtb9zFW6zs0GjPp73qtpYYg4q6PEKbzJbxCpKfw==",
"dependencies": { "dependencies": {
"System.CodeDom": "6.0.0" "Microsoft.NETCore.Platforms": "5.0.0",
"Microsoft.Win32.Registry": "5.0.0",
"System.CodeDom": "5.0.0"
} }
}, },
"System.Memory": { "System.Memory": {
@ -1947,8 +1930,15 @@
}, },
"System.Reflection.Emit": { "System.Reflection.Emit": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.7.0", "resolved": "4.3.0",
"contentHash": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==" "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
"dependencies": {
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
}, },
"System.Reflection.Emit.ILGeneration": { "System.Reflection.Emit.ILGeneration": {
"type": "Transitive", "type": "Transitive",
@ -1962,8 +1952,14 @@
}, },
"System.Reflection.Emit.Lightweight": { "System.Reflection.Emit.Lightweight": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.7.0", "resolved": "4.3.0",
"contentHash": "a4OLB4IITxAXJeV74MDx49Oq2+PsF6Sml54XAFv+2RyWwtDBcabzoxiiJRhdhx+gaohLh4hEGCLQyBozXoQPqA==" "contentHash": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
"dependencies": {
"System.Reflection": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
}, },
"System.Reflection.Extensions": { "System.Reflection.Extensions": {
"type": "Transitive", "type": "Transitive",
@ -1978,8 +1974,8 @@
}, },
"System.Reflection.Metadata": { "System.Reflection.Metadata": {
"type": "Transitive", "type": "Transitive",
"resolved": "1.6.0", "resolved": "5.0.0",
"contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==" "contentHash": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ=="
}, },
"System.Reflection.Primitives": { "System.Reflection.Primitives": {
"type": "Transitive", "type": "Transitive",
@ -2556,11 +2552,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2570,7 +2565,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2579,7 +2574,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }

View File

@ -5,7 +5,6 @@ using Bit.Admin.Utilities;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.OrganizationConnectionConfigs; using Bit.Core.Models.OrganizationConnectionConfigs;
@ -21,7 +20,6 @@ using Bit.Core.Utilities;
using Bit.Core.Vault.Repositories; using Bit.Core.Vault.Repositories;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Stripe;
namespace Bit.Admin.Controllers; namespace Bit.Admin.Controllers;
@ -50,7 +48,6 @@ public class OrganizationsController : Controller
private readonly ISecretRepository _secretRepository; private readonly ISecretRepository _secretRepository;
private readonly IProjectRepository _projectRepository; private readonly IProjectRepository _projectRepository;
private readonly IServiceAccountRepository _serviceAccountRepository; private readonly IServiceAccountRepository _serviceAccountRepository;
private readonly IStripeSyncService _stripeSyncService;
public OrganizationsController( public OrganizationsController(
IOrganizationService organizationService, IOrganizationService organizationService,
@ -74,8 +71,7 @@ public class OrganizationsController : Controller
ICurrentContext currentContext, ICurrentContext currentContext,
ISecretRepository secretRepository, ISecretRepository secretRepository,
IProjectRepository projectRepository, IProjectRepository projectRepository,
IServiceAccountRepository serviceAccountRepository, IServiceAccountRepository serviceAccountRepository)
IStripeSyncService stripeSyncService)
{ {
_organizationService = organizationService; _organizationService = organizationService;
_organizationRepository = organizationRepository; _organizationRepository = organizationRepository;
@ -99,7 +95,6 @@ public class OrganizationsController : Controller
_secretRepository = secretRepository; _secretRepository = secretRepository;
_projectRepository = projectRepository; _projectRepository = projectRepository;
_serviceAccountRepository = serviceAccountRepository; _serviceAccountRepository = serviceAccountRepository;
_stripeSyncService = stripeSyncService;
} }
[RequirePermission(Permission.Org_List_View)] [RequirePermission(Permission.Org_List_View)]
@ -213,19 +208,6 @@ public class OrganizationsController : Controller
throw new BadRequestException("Plan does not support Secrets Manager"); throw new BadRequestException("Plan does not support Secrets Manager");
} }
try
{
if (!string.IsNullOrWhiteSpace(organization.GatewayCustomerId) && !string.IsNullOrWhiteSpace(organization.BillingEmail))
{
await _stripeSyncService.UpdateCustomerEmailAddress(organization.GatewayCustomerId, organization.BillingEmail);
}
}
catch (StripeException stripeException)
{
_logger.LogError(stripeException, "Failed to update billing email address in Stripe for Organization with ID '{organizationId}'", organization.Id);
throw;
}
await _organizationRepository.ReplaceAsync(organization); await _organizationRepository.ReplaceAsync(organization);
await _applicationCacheService.UpsertOrganizationAbilityAsync(organization); await _applicationCacheService.UpsertOrganizationAbilityAsync(organization);
await _referenceEventService.RaiseEventAsync(new ReferenceEvent(ReferenceEventType.OrganizationEditedByAdmin, organization, _currentContext) await _referenceEventService.RaiseEventAsync(new ReferenceEvent(ReferenceEventType.OrganizationEditedByAdmin, organization, _currentContext)

View File

@ -3,6 +3,7 @@ using System.Text.Json;
using Bit.Admin.Enums; using Bit.Admin.Enums;
using Bit.Admin.Models; using Bit.Admin.Models;
using Bit.Admin.Utilities; using Bit.Admin.Utilities;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Models.BitStripe; using Bit.Core.Models.BitStripe;
using Bit.Core.OrganizationFeatures.OrganizationLicenses.Interfaces; using Bit.Core.OrganizationFeatures.OrganizationLicenses.Interfaces;

View File

@ -2,6 +2,8 @@
using Bit.Admin.Models; using Bit.Admin.Models;
using Bit.Admin.Services; using Bit.Admin.Services;
using Bit.Admin.Utilities; using Bit.Admin.Utilities;
using Bit.Core;
using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services; using Bit.Core.Services;
@ -21,19 +23,28 @@ public class UsersController : Controller
private readonly IPaymentService _paymentService; private readonly IPaymentService _paymentService;
private readonly GlobalSettings _globalSettings; private readonly GlobalSettings _globalSettings;
private readonly IAccessControlService _accessControlService; private readonly IAccessControlService _accessControlService;
private readonly ICurrentContext _currentContext;
private readonly IFeatureService _featureService;
private bool UseFlexibleCollections =>
_featureService.IsEnabled(FeatureFlagKeys.FlexibleCollections, _currentContext);
public UsersController( public UsersController(
IUserRepository userRepository, IUserRepository userRepository,
ICipherRepository cipherRepository, ICipherRepository cipherRepository,
IPaymentService paymentService, IPaymentService paymentService,
GlobalSettings globalSettings, GlobalSettings globalSettings,
IAccessControlService accessControlService) IAccessControlService accessControlService,
ICurrentContext currentContext,
IFeatureService featureService)
{ {
_userRepository = userRepository; _userRepository = userRepository;
_cipherRepository = cipherRepository; _cipherRepository = cipherRepository;
_paymentService = paymentService; _paymentService = paymentService;
_globalSettings = globalSettings; _globalSettings = globalSettings;
_accessControlService = accessControlService; _accessControlService = accessControlService;
_currentContext = currentContext;
_featureService = featureService;
} }
[RequirePermission(Permission.User_List_View)] [RequirePermission(Permission.User_List_View)]
@ -69,7 +80,7 @@ public class UsersController : Controller
return RedirectToAction("Index"); return RedirectToAction("Index");
} }
var ciphers = await _cipherRepository.GetManyByUserIdAsync(id); var ciphers = await _cipherRepository.GetManyByUserIdAsync(id, useFlexibleCollections: UseFlexibleCollections);
return View(new UserViewModel(user, ciphers)); return View(new UserViewModel(user, ciphers));
} }
@ -82,7 +93,7 @@ public class UsersController : Controller
return RedirectToAction("Index"); return RedirectToAction("Index");
} }
var ciphers = await _cipherRepository.GetManyByUserIdAsync(id); var ciphers = await _cipherRepository.GetManyByUserIdAsync(id, useFlexibleCollections: UseFlexibleCollections);
var billingInfo = await _paymentService.GetBillingAsync(user); var billingInfo = await _paymentService.GetBillingAsync(user);
return View(new UserEditModel(user, ciphers, billingInfo, _globalSettings)); return View(new UserEditModel(user, ciphers, billingInfo, _globalSettings));
} }

View File

@ -1,4 +1,4 @@
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
namespace Bit.Admin.Models; namespace Bit.Admin.Models;

View File

@ -1,4 +1,4 @@
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
namespace Bit.Admin.Models; namespace Bit.Admin.Models;

View File

@ -82,7 +82,11 @@
<label asp-for="PlanType"></label> <label asp-for="PlanType"></label>
@{ @{
var planTypes = Enum.GetValues<PlanType>() var planTypes = Enum.GetValues<PlanType>()
.Where(p => Model.Provider == null || p is >= PlanType.TeamsMonthly and <= PlanType.TeamsStarter) .Where(p =>
Model.Provider == null ||
(Model.Provider != null
&& p is >= PlanType.TeamsMonthly2019 and <= PlanType.EnterpriseAnnually2019 or >= PlanType.TeamsMonthly2020 and <= PlanType.EnterpriseAnnually)
)
.Select(e => new SelectListItem .Select(e => new SelectListItem
{ {
Value = ((int)e).ToString(), Value = ((int)e).ToString(),

View File

@ -193,13 +193,13 @@
}, },
"Dapper": { "Dapper": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.123", "resolved": "2.1.24",
"contentHash": "RDFF4rBLLmbpi6pwkY7q/M6UXHRJEOerplDGE5jwEkP/JGJnBauAClYavNKJPW1yOTWRPIyfj4is3EaJxQXILQ==" "contentHash": "/2t2vsdJyZRsk13AsWigZpsuFvEwK+o3v862cEULXoww905gyKhJFSuwmZI/4Ui9COX9ZCFCI09UHyH4wVYl3A=="
}, },
"dbup-core": { "dbup-core": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.8", "resolved": "5.0.37",
"contentHash": "d+3RxJDftcarp1Y7jI78HRdRWRC7VFjM+rB2CFHWDmao6OixuLrqiyEo1DeuMNrWLTR5mmE8p1YTpFOvozI9ZQ==", "contentHash": "++z5z25tgkJ4eiLp3MahAmTkEDQogj5SoGXfDX0PxatjQfGszuR5hK3JBaB1orfCJ68mjZGtKWEp9YcxXa4jjg==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0", "Microsoft.CSharp": "4.7.0",
"System.Diagnostics.TraceSource": "4.3.0" "System.Diagnostics.TraceSource": "4.3.0"
@ -207,12 +207,12 @@
}, },
"dbup-sqlserver": { "dbup-sqlserver": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.8", "resolved": "5.0.37",
"contentHash": "b954l5Zgj9qgHtm16SLq2qGLJ0gIZtrWdh6JHoUsCLMHYW+0K2Oevabquw447At4U6X2t4CNuy7ZLHYf/Z/8yg==", "contentHash": "nSmm8ImnqY/cyvlUolyn7cl+xekEe2syq2jb6mpqCsGvDUnJNFTQGE2N0R3wtIDBBc/e/waTMzYvVCgQkLxNnw==",
"dependencies": { "dependencies": {
"Microsoft.Azure.Services.AppAuthentication": "1.6.2", "Microsoft.Azure.Services.AppAuthentication": "1.6.2",
"Microsoft.Data.SqlClient": "5.0.1", "Microsoft.Data.SqlClient": "5.1.1",
"dbup-core": "5.0.8" "dbup-core": "5.0.37"
} }
}, },
"DnsClient": { "DnsClient": {
@ -223,6 +223,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fido2": { "Fido2": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.1", "resolved": "3.0.1",
@ -251,57 +269,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"LaunchDarkly.Cache": { "LaunchDarkly.Cache": {
"type": "Transitive", "type": "Transitive",
@ -310,26 +287,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -344,13 +322,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -362,16 +340,16 @@
}, },
"linq2db": { "linq2db": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.2.1", "resolved": "5.3.1",
"contentHash": "OOBM8s39zhbZAgqFnl2KGxT5RqBDw21X69U528qV2PgQispaA3f+or0ILrLEgnNIJuB4EBgaw8gC6ttSHn4X0Q==" "contentHash": "707mIbEmtptvKeUW940UwoNwq05I7OUu0VWtclLtyYaASp+ugX4I/Er1UVpeldsDawqlVMXB5EQ5/Oar6AkUGQ=="
}, },
"linq2db.EntityFrameworkCore": { "linq2db.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.5.0", "resolved": "7.6.0",
"contentHash": "ePHzO99xbObgMLlAFh08of1SnVhg6j4Su9327DrIB7RZWCgtQIX6k+nbl+HRVOooAndZSs7b+DduSgdnJjaJGw==", "contentHash": "T1W9o8wVzApsUwu7SRg/L7487kaiLQYt2AqRVnXVGfobD+ZKy2oRsUMws0PICtciaz4qbfLp/r/+NksfuYsFlw==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "7.0.0", "Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"linq2db": "5.2.1" "linq2db": "5.3.1"
} }
}, },
"MailKit": { "MailKit": {
@ -392,10 +370,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -428,8 +406,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.Azure.Amqp": { "Microsoft.Azure.Amqp": {
"type": "Transitive", "type": "Transitive",
@ -504,48 +482,44 @@
}, },
"Microsoft.Data.SqlClient": { "Microsoft.Data.SqlClient": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.1",
"contentHash": "uu8dfrsx081cSbEevWuZAvqdmANDGJkbLBL2G3j0LAZxX1Oy8RCVAaC4Lcuak6jNicWP6CWvHqBTIEmQNSxQlw==", "contentHash": "MW5E9HFvCaV069o8b6YpuRDPBux8s96qDnOJ+4N9QNUCs7c5W3KxwQ+ftpAjbMUlImL+c9WR+l+f5hzjkqhu2g==",
"dependencies": { "dependencies": {
"Azure.Identity": "1.6.0", "Azure.Identity": "1.7.0",
"Microsoft.Data.SqlClient.SNI.runtime": "5.0.1", "Microsoft.Data.SqlClient.SNI.runtime": "5.1.0",
"Microsoft.Identity.Client": "4.45.0", "Microsoft.Identity.Client": "4.47.2",
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.21.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.24.0",
"Microsoft.SqlServer.Server": "1.0.0", "Microsoft.SqlServer.Server": "1.0.0",
"Microsoft.Win32.Registry": "5.0.0", "System.Configuration.ConfigurationManager": "6.0.1",
"System.Buffers": "4.5.1", "System.Diagnostics.DiagnosticSource": "6.0.0",
"System.Configuration.ConfigurationManager": "5.0.0", "System.Runtime.Caching": "6.0.0",
"System.Diagnostics.DiagnosticSource": "5.0.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime.Caching": "5.0.0",
"System.Security.Cryptography.Cng": "5.0.0", "System.Security.Cryptography.Cng": "5.0.0",
"System.Security.Principal.Windows": "5.0.0", "System.Security.Principal.Windows": "5.0.0",
"System.Text.Encoding.CodePages": "5.0.0", "System.Text.Encoding.CodePages": "6.0.0",
"System.Text.Encodings.Web": "4.7.2" "System.Text.Encodings.Web": "6.0.0"
} }
}, },
"Microsoft.Data.SqlClient.SNI.runtime": { "Microsoft.Data.SqlClient.SNI.runtime": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "y0X5MxiNdbITJYoafJ2ruaX6hqO0twpCGR/ipiDOe85JKLU8WL4TuAQfDe5qtt3bND5Je26HnrarLSAMMnVTNg==" "contentHash": "jVsElisM5sfBzaaV9kdq2NXZLwIbytetnsOIlJ0cQGgQP4zFNBmkfHBnpwtmKrtBJBEV9+9PVQPVrcCVhDgcIg=="
}, },
"Microsoft.Data.Sqlite.Core": { "Microsoft.Data.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", "contentHash": "qvYae3/v9Fvqsjp/7OKQBuJK+Uc3m/WctfpIUMmGMDot2Bd8UWBKiMSlh26UtfQa9x4N+k7NxCT+AbZVoNrCdg==",
"dependencies": { "dependencies": {
"SQLitePCLRaw.core": "2.1.4" "SQLitePCLRaw.core": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore": { "Microsoft.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "contentHash": "0KYkAemPygW6yzifciFlmMzkO4sI4Dw69xLgwg3ui5rXJS5XvzuAWVvfdrKJciqeCbCnVS/ZbOWpcwWgqce5bQ==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.5", "Microsoft.EntityFrameworkCore.Abstractions": "7.0.14",
"Microsoft.EntityFrameworkCore.Analyzers": "7.0.5", "Microsoft.EntityFrameworkCore.Analyzers": "7.0.14",
"Microsoft.Extensions.Caching.Memory": "7.0.0", "Microsoft.Extensions.Caching.Memory": "7.0.0",
"Microsoft.Extensions.DependencyInjection": "7.0.0", "Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.Logging": "7.0.0" "Microsoft.Extensions.Logging": "7.0.0"
@ -553,49 +527,49 @@
}, },
"Microsoft.EntityFrameworkCore.Abstractions": { "Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "iwQso+hFRsEWjhH2WsEQj1D2QE5BlEXiXEt6A3SlYTPRPdZsyTNDeDDEdtxL+H/UJPQgQYY+9SMMRcEiXBmCAA==" "contentHash": "aEcXDSYpDdD5wdIRKTqcS44f3W4capqQ1BWVRPJgacATfHkO62RX9Nnh0hUFg+rei9OLuJp0Y4zsy1fNeOXv5g=="
}, },
"Microsoft.EntityFrameworkCore.Analyzers": { "Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "yMLM/aK1MikVqpjxd7PJ1Pjgztd3VAd26ZHxyjxG3RPeM9cHjvS5tCg9kAAayR6eHmBg0ffZsHdT28WfA5tTlA==" "contentHash": "esI4RF6mix4DDFBhWB9k1vJxAL8GouSf5ZV8oFJoVsIQ9d2J3MPgC1VL2qM9Vw5cH7Vg7TzRyKNpCRXFVkWs9w=="
}, },
"Microsoft.EntityFrameworkCore.Relational": { "Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "u/33DC4S6g2hpMPgBc5Kdnlz//nqHR5c/ovgjtiP/wQ7sOd0EOdygVzUJAAOxCwbtAHDsJXS9Vc3jLFYq0yu8Q==", "contentHash": "MrVBnWOFYwfLMGQfrcIuqEM9Xvokv1vJeYxqNH3K3xOtAdHwHQTrKnpDP97tU+LBlvcnyXAtAtryYcpLXWtRNA==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.5", "Microsoft.EntityFrameworkCore": "7.0.14",
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0" "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite": { "Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "2XPZB9OLF5/m13HgZp7/Dv0u8FWEJzcaBsMYR9Kp3R6aygkb3RnOijofPDTsmdhAqG9YTysCmh2bFaGs0TCc7A==", "contentHash": "8c8Hw2tmfy5YEsi9RL2/u2Qi9IwVbmj/yDlJy4iJPadeE3/AssLrgtobOBz4ftg2y5PVjFL59Gq7YzGLQH5q1A==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.5", "Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.14",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite.Core": { "Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "4C+9ct6A/Bq61Ta9Uh2td4/XwNpRCiPI03SWTa3hPJjA/g8wCw2hetbh3DDe5HcydzgDq/lRRjU/eRy3UODklQ==", "contentHash": "JNUkZVff1V/A/P3JiBbgt+Y2oCQSuzORxE3jOqFDbFjSFu7jHDEetJ/afSF/taa0lbyN9OpvaKjsbKk3Iis29Q==",
"dependencies": { "dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5", "Microsoft.Data.Sqlite.Core": "7.0.14",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5", "Microsoft.EntityFrameworkCore.Relational": "7.0.14",
"Microsoft.Extensions.DependencyModel": "7.0.0" "Microsoft.Extensions.DependencyModel": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.SqlServer": { "Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "cUJqCiamT0EvpKNgZEV5fqNv2MyVfKNgOPQfFINqHiIKHOYrS0nTCUJP97+UuG0JIIrP792/PwnuNjbekImtBg==", "contentHash": "d9hqEw4W/TdQ1WDm03uyFuDoehL6GNq/NMChFaC4dcV60I42vKdUC0fYTuE2QPunVUpf5XUTCkJ6fYGjMos2AA==",
"dependencies": { "dependencies": {
"Microsoft.Data.SqlClient": "5.0.1", "Microsoft.Data.SqlClient": "5.1.1",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5" "Microsoft.EntityFrameworkCore.Relational": "7.0.14"
} }
}, },
"Microsoft.Extensions.Caching.Abstractions": { "Microsoft.Extensions.Caching.Abstractions": {
@ -848,8 +822,8 @@
}, },
"Microsoft.IdentityModel.Abstractions": { "Microsoft.IdentityModel.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.22.0", "resolved": "6.24.0",
"contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==" "contentHash": "X6aBK56Ot15qKyG7X37KsPnrwah+Ka55NJWPppWVTDi8xWq7CJgeNw2XyaeHgE1o/mW4THwoabZkBbeG2TPBiw=="
}, },
"Microsoft.IdentityModel.Clients.ActiveDirectory": { "Microsoft.IdentityModel.Clients.ActiveDirectory": {
"type": "Transitive", "type": "Transitive",
@ -873,45 +847,47 @@
}, },
"Microsoft.IdentityModel.JsonWebTokens": { "Microsoft.IdentityModel.JsonWebTokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "d3h1/BaMeylKTkdP6XwRCxuOoDJZ44V9xaXr6gl5QxmpnZGdoK3bySo3OQN8ehRLJHShb94ElLUvoXyglQtgAw==", "contentHash": "XDWrkThcxfuWp79AvAtg5f+uRS1BxkIbJnsG/e8VPzOWkYYuDg33emLjp5EWcwXYYIDsHnVZD/00kM/PYFQc/g==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Json": "4.7.2"
} }
}, },
"Microsoft.IdentityModel.Logging": { "Microsoft.IdentityModel.Logging": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "tuEhHIQwvBEhMf8I50hy8FHmRSUkffDFP5EdLsSDV4qRcl2wvOPkQxYqEzWkh+ytW6sbdJGEXElGhmhDfAxAKg==", "contentHash": "qLYWDOowM/zghmYKXw1yfYKlHOdS41i8t4hVXr9bSI90zHqhyhQh9GwVy8pENzs5wHeytU23DymluC9NtgYv7w==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Abstractions": "6.21.0" "Microsoft.IdentityModel.Abstractions": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols": { "Microsoft.IdentityModel.Protocols": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "0FqY5cTLQKtHrClzHEI+QxJl8OBT2vUiEQQB7UKk832JDiJJmetzYZ3AdSrPjN/3l3nkhByeWzXnhrX0JbifKg==", "contentHash": "+NzKCkvsQ8X1r/Ff74V7CFr9OsdMRaB6DsV+qpH7NNLdYJ8O4qHbmTnNEsjFcDmk/gVNDwhoL2gN5pkPVq0lwQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols.OpenIdConnect": { "Microsoft.IdentityModel.Protocols.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "vtSKL7n6EnAsLyxmiviusm6LKrblT2ndnNqN6rvVq6iIHAnPCK9E2DkDx6h1Jrpy1cvbp40r0cnTg23nhEAGTA==", "contentHash": "a/2RRrc8C9qaw8qdD9hv1ES9YKFgxaqr/SnwMSLbwQZJSUQDd4qx1K4EYgWaQWs73R+VXLyKSxN0f/uE9CsBiQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols": "6.21.0", "Microsoft.IdentityModel.Protocols": "6.24.0",
"System.IdentityModel.Tokens.Jwt": "6.21.0" "System.IdentityModel.Tokens.Jwt": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Tokens": { "Microsoft.IdentityModel.Tokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "AAEHZvZyb597a+QJSmtxH3n2P1nIJGpZ4Q89GTenknRx6T6zyfzf592yW/jA5e8EHN4tNMjjXHQaYWEq5+L05w==", "contentHash": "ZPqHi86UYuqJXJ7bLnlEctHKkPKT4lGUFbotoCNiXNCSL02emYlcxzGYsRGWWmbFEcYDMi2dcTLLYNzHqWOTsw==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.5.0", "Microsoft.CSharp": "4.5.0",
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"System.Security.Cryptography.Cng": "4.5.0" "System.Security.Cryptography.Cng": "4.5.0"
} }
}, },
@ -1042,13 +1018,13 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"Npgsql": { "Npgsql": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.6",
"contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", "contentHash": "TAqvwRnm3NJ0QvN7cvu6geJkbI0XPzGVRElVY5hF4gsgA+BnE12x6GM1TLhdeq+7ZKvvo3BD8jXKnXmr3tvdEw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "6.0.0", "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0" "System.Runtime.CompilerServices.Unsafe": "6.0.0"
@ -1056,13 +1032,13 @@
}, },
"Npgsql.EntityFrameworkCore.PostgreSQL": { "Npgsql.EntityFrameworkCore.PostgreSQL": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.11",
"contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", "contentHash": "cHEgEz0ldXc9wVANs8sJqC+3eilqefrkasCBgaVT0tyj8tb1p3/pwy2ngjboNkDG3M0z+xJsJ4jC5p8wySAM3w==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Relational": "[7.0.11, 8.0.0)",
"Npgsql": "7.0.4" "Npgsql": "7.0.6"
} }
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
@ -1385,8 +1361,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -1559,8 +1535,8 @@
}, },
"System.Configuration.ConfigurationManager": { "System.Configuration.ConfigurationManager": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.0.1",
"contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==",
"dependencies": { "dependencies": {
"System.Security.Cryptography.ProtectedData": "6.0.0", "System.Security.Cryptography.ProtectedData": "6.0.0",
"System.Security.Permissions": "6.0.0" "System.Security.Permissions": "6.0.0"
@ -1746,11 +1722,11 @@
}, },
"System.IdentityModel.Tokens.Jwt": { "System.IdentityModel.Tokens.Jwt": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "JRD8AuypBE+2zYxT3dMJomQVsPYsCqlyZhWel3J1d5nzQokSRyTueF+Q4ID3Jcu6zSZKuzOdJ1MLTkbQsDqcvQ==", "contentHash": "Qibsj9MPWq8S/C0FgvmsLfIlHLE7ay0MJIaAmK94ivN3VyDdglqReed5qMvdQhSL0BzK6v0Z1wB/sD88zVu6Jw==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"System.IO": { "System.IO": {
@ -2240,10 +2216,10 @@
}, },
"System.Runtime.Caching": { "System.Runtime.Caching": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "6.0.0",
"contentHash": "30D6MkO8WF9jVGWZIP0hmCN8l9BTY4LCsAzLIe4xFSXzs+AjDotR7DpSmj27pFskDURzUvqYYY0ikModgBTxWw==", "contentHash": "E0e03kUp5X2k+UAoVl6efmI7uU7JRBWi5EIdlQ7cr0NpBGjHG4fWII35PgsBY9T4fJQ8E4QPsL0rKksU9gcL5A==",
"dependencies": { "dependencies": {
"System.Configuration.ConfigurationManager": "5.0.0" "System.Configuration.ConfigurationManager": "6.0.0"
} }
}, },
"System.Runtime.CompilerServices.Unsafe": { "System.Runtime.CompilerServices.Unsafe": {
@ -2807,15 +2783,15 @@
"commercial.core": { "commercial.core": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )" "Core": "[2023.12.0, )"
} }
}, },
"commercial.infrastructure.entityframework": { "commercial.infrastructure.entityframework": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
}, },
"core": { "core": {
@ -2833,11 +2809,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2847,7 +2822,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2856,7 +2831,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }
@ -2864,58 +2839,58 @@
"infrastructure.dapper": { "infrastructure.dapper": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Dapper": "[2.0.123, )" "Dapper": "[2.1.24, )"
} }
}, },
"infrastructure.entityframework": { "infrastructure.entityframework": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Relational": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )", "Microsoft.EntityFrameworkCore.SqlServer": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Sqlite": "[7.0.14, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.11, )",
"Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )", "Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )",
"linq2db.EntityFrameworkCore": "[7.5.0, )" "linq2db.EntityFrameworkCore": "[7.6.0, )"
} }
}, },
"migrator": { "migrator": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Microsoft.Extensions.Logging": "[6.0.0, )", "Microsoft.Extensions.Logging": "[6.0.0, )",
"dbup-sqlserver": "[5.0.8, )" "dbup-sqlserver": "[5.0.37, )"
} }
}, },
"mysqlmigrations": { "mysqlmigrations": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
}, },
"postgresmigrations": { "postgresmigrations": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
}, },
"sharedweb": { "sharedweb": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.Dapper": "[2023.10.2, )", "Infrastructure.Dapper": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
}, },
"sqlitemigrations": { "sqlitemigrations": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
} }
} }

View File

@ -2,6 +2,8 @@
using Bit.Api.AdminConsole.Models.Response.Organizations; using Bit.Api.AdminConsole.Models.Response.Organizations;
using Bit.Api.Models.Request.Organizations; using Bit.Api.Models.Request.Organizations;
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Models.Data.Organizations.Policies;
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Interfaces;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Context; using Bit.Core.Context;
@ -9,7 +11,6 @@ using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
using Bit.Core.Models.Data.Organizations.OrganizationUsers; using Bit.Core.Models.Data.Organizations.OrganizationUsers;
using Bit.Core.Models.Data.Organizations.Policies;
using Bit.Core.OrganizationFeatures.OrganizationSubscriptions.Interface; using Bit.Core.OrganizationFeatures.OrganizationSubscriptions.Interface;
using Bit.Core.OrganizationFeatures.OrganizationUsers.Interfaces; using Bit.Core.OrganizationFeatures.OrganizationUsers.Interfaces;
using Bit.Core.Repositories; using Bit.Core.Repositories;

View File

@ -11,6 +11,8 @@ using Bit.Api.Models.Request.Accounts;
using Bit.Api.Models.Request.Organizations; using Bit.Api.Models.Request.Organizations;
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Core; using Bit.Core;
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Models.Data.Organizations.Policies;
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys.Interfaces; using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys.Interfaces;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Auth.Enums; using Bit.Core.Auth.Enums;
@ -20,7 +22,6 @@ using Bit.Core.Context;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
using Bit.Core.Models.Data.Organizations.Policies;
using Bit.Core.OrganizationFeatures.OrganizationLicenses.Interfaces; using Bit.Core.OrganizationFeatures.OrganizationLicenses.Interfaces;
using Bit.Core.OrganizationFeatures.OrganizationSubscriptions.Interface; using Bit.Core.OrganizationFeatures.OrganizationSubscriptions.Interface;
using Bit.Core.Repositories; using Bit.Core.Repositories;
@ -794,7 +795,15 @@ public class OrganizationsController : Controller
throw new NotFoundException(); throw new NotFoundException();
} }
await _organizationService.UpdateAsync(model.ToOrganization(organization)); var v1Enabled = _featureService.IsEnabled(FeatureFlagKeys.FlexibleCollectionsV1, _currentContext);
if (!v1Enabled)
{
// V1 is disabled, ensure V1 setting doesn't change
model.AllowAdminAccessToAllCollectionItems = organization.AllowAdminAccessToAllCollectionItems;
}
await _organizationService.UpdateAsync(model.ToOrganization(organization), eventType: EventType.Organization_CollectionManagement_Updated);
return new OrganizationResponseModel(organization); return new OrganizationResponseModel(organization);
} }

View File

@ -1,10 +1,13 @@
using Bit.Api.AdminConsole.Models.Request; using Bit.Api.AdminConsole.Models.Request;
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Models.Api.Response;
using Bit.Core.AdminConsole.Repositories;
using Bit.Core.AdminConsole.Services;
using Bit.Core.Auth.Models.Business.Tokenables; using Bit.Core.Auth.Models.Business.Tokenables;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Api.Response;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services; using Bit.Core.Services;
using Bit.Core.Settings; using Bit.Core.Settings;

View File

@ -1,5 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
namespace Bit.Api.AdminConsole.Models.Request.Organizations; namespace Bit.Api.AdminConsole.Models.Request.Organizations;

View File

@ -1,5 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Models.Data; using Bit.Core.Models.Data;
using Bit.Core.Settings; using Bit.Core.Settings;

View File

@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Text.Json; using System.Text.Json;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Enums; using Bit.Core.AdminConsole.Enums;
namespace Bit.Api.AdminConsole.Models.Request; namespace Bit.Api.AdminConsole.Models.Request;

View File

@ -1,4 +1,4 @@
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Models.Api; using Bit.Core.Models.Api;
namespace Bit.Api.AdminConsole.Models.Response.Organizations; namespace Bit.Api.AdminConsole.Models.Response.Organizations;

View File

@ -1,4 +1,4 @@
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Models.Api; using Bit.Core.Models.Api;
namespace Bit.Api.AdminConsole.Models.Response.Organizations; namespace Bit.Api.AdminConsole.Models.Response.Organizations;

View File

@ -1,5 +1,5 @@
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Models.Api; using Bit.Core.Models.Api;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
@ -55,6 +55,7 @@ public class OrganizationResponseModel : ResponseModel
MaxAutoscaleSmSeats = organization.MaxAutoscaleSmSeats; MaxAutoscaleSmSeats = organization.MaxAutoscaleSmSeats;
MaxAutoscaleSmServiceAccounts = organization.MaxAutoscaleSmServiceAccounts; MaxAutoscaleSmServiceAccounts = organization.MaxAutoscaleSmServiceAccounts;
LimitCollectionCreationDeletion = organization.LimitCollectionCreationDeletion; LimitCollectionCreationDeletion = organization.LimitCollectionCreationDeletion;
AllowAdminAccessToAllCollectionItems = organization.AllowAdminAccessToAllCollectionItems;
} }
public Guid Id { get; set; } public Guid Id { get; set; }
@ -95,6 +96,7 @@ public class OrganizationResponseModel : ResponseModel
public int? MaxAutoscaleSmSeats { get; set; } public int? MaxAutoscaleSmSeats { get; set; }
public int? MaxAutoscaleSmServiceAccounts { get; set; } public int? MaxAutoscaleSmServiceAccounts { get; set; }
public bool LimitCollectionCreationDeletion { get; set; } public bool LimitCollectionCreationDeletion { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }
} }
public class OrganizationSubscriptionResponseModel : OrganizationResponseModel public class OrganizationSubscriptionResponseModel : OrganizationResponseModel

View File

@ -60,6 +60,7 @@ public class ProfileOrganizationResponseModel : ResponseModel
FamilySponsorshipValidUntil = organization.FamilySponsorshipValidUntil; FamilySponsorshipValidUntil = organization.FamilySponsorshipValidUntil;
AccessSecretsManager = organization.AccessSecretsManager; AccessSecretsManager = organization.AccessSecretsManager;
LimitCollectionCreationDeletion = organization.LimitCollectionCreationDeletion; LimitCollectionCreationDeletion = organization.LimitCollectionCreationDeletion;
AllowAdminAccessToAllCollectionItems = organization.AllowAdminAccessToAllCollectionItems;
if (organization.SsoConfig != null) if (organization.SsoConfig != null)
{ {
@ -114,4 +115,5 @@ public class ProfileOrganizationResponseModel : ResponseModel
public bool? FamilySponsorshipToDelete { get; set; } public bool? FamilySponsorshipToDelete { get; set; }
public bool AccessSecretsManager { get; set; } public bool AccessSecretsManager { get; set; }
public bool LimitCollectionCreationDeletion { get; set; } public bool LimitCollectionCreationDeletion { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }
} }

View File

@ -2,9 +2,10 @@
using Bit.Api.AdminConsole.Public.Models.Request; using Bit.Api.AdminConsole.Public.Models.Request;
using Bit.Api.AdminConsole.Public.Models.Response; using Bit.Api.AdminConsole.Public.Models.Response;
using Bit.Api.Models.Public.Response; using Bit.Api.Models.Public.Response;
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Repositories;
using Bit.Core.AdminConsole.Services;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Enums;
using Bit.Core.Repositories;
using Bit.Core.Services; using Bit.Core.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;

View File

@ -1,5 +1,5 @@
using System.Text.Json; using System.Text.Json;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
namespace Bit.Api.AdminConsole.Public.Models.Request; namespace Bit.Api.AdminConsole.Public.Models.Request;

View File

@ -1,8 +1,8 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Text.Json; using System.Text.Json;
using Bit.Api.Models.Public.Response; using Bit.Api.Models.Public.Response;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Enums; using Bit.Core.AdminConsole.Enums;
namespace Bit.Api.AdminConsole.Public.Models.Response; namespace Bit.Api.AdminConsole.Public.Models.Response;

View File

@ -1,12 +1,17 @@
using Bit.Api.AdminConsole.Models.Response; using Bit.Api.AdminConsole.Models.Response;
using Bit.Api.Auth.Models.Request;
using Bit.Api.Auth.Models.Request.Accounts; using Bit.Api.Auth.Models.Request.Accounts;
using Bit.Api.Auth.Validators;
using Bit.Api.Models.Request; using Bit.Api.Models.Request;
using Bit.Api.Models.Request.Accounts; using Bit.Api.Models.Request.Accounts;
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Api.Utilities; using Bit.Api.Utilities;
using Bit.Api.Vault.Models.Request;
using Bit.Core; using Bit.Core;
using Bit.Core.AdminConsole.Enums.Provider; using Bit.Core.AdminConsole.Enums.Provider;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.AdminConsole.Services;
using Bit.Core.Auth.Entities;
using Bit.Core.Auth.Models.Api.Request.Accounts; using Bit.Core.Auth.Models.Api.Request.Accounts;
using Bit.Core.Auth.Models.Api.Response.Accounts; using Bit.Core.Auth.Models.Api.Response.Accounts;
using Bit.Core.Auth.Models.Data; using Bit.Core.Auth.Models.Data;
@ -15,6 +20,7 @@ using Bit.Core.Auth.UserFeatures.UserKey;
using Bit.Core.Auth.UserFeatures.UserMasterPassword.Interfaces; using Bit.Core.Auth.UserFeatures.UserMasterPassword.Interfaces;
using Bit.Core.Auth.Utilities; using Bit.Core.Auth.Utilities;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Api.Response; using Bit.Core.Models.Api.Response;
@ -33,7 +39,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Bit.Api.Controllers; namespace Bit.Api.Auth.Controllers;
[Route("accounts")] [Route("accounts")]
[Authorize("Application")] [Authorize("Application")]
@ -57,6 +63,14 @@ public class AccountsController : Controller
private readonly IFeatureService _featureService; private readonly IFeatureService _featureService;
private readonly ICurrentContext _currentContext; private readonly ICurrentContext _currentContext;
private bool UseFlexibleCollections =>
_featureService.IsEnabled(FeatureFlagKeys.FlexibleCollections, _currentContext);
private readonly IRotationValidator<IEnumerable<CipherWithIdRequestModel>, IEnumerable<Cipher>> _cipherValidator;
private readonly IRotationValidator<IEnumerable<FolderWithIdRequestModel>, IEnumerable<Folder>> _folderValidator;
private readonly IRotationValidator<IEnumerable<EmergencyAccessWithIdRequestModel>, IEnumerable<EmergencyAccess>>
_emergencyAccessValidator;
public AccountsController( public AccountsController(
GlobalSettings globalSettings, GlobalSettings globalSettings,
@ -75,7 +89,11 @@ public class AccountsController : Controller
ISetInitialMasterPasswordCommand setInitialMasterPasswordCommand, ISetInitialMasterPasswordCommand setInitialMasterPasswordCommand,
IRotateUserKeyCommand rotateUserKeyCommand, IRotateUserKeyCommand rotateUserKeyCommand,
IFeatureService featureService, IFeatureService featureService,
ICurrentContext currentContext ICurrentContext currentContext,
IRotationValidator<IEnumerable<CipherWithIdRequestModel>, IEnumerable<Cipher>> cipherValidator,
IRotationValidator<IEnumerable<FolderWithIdRequestModel>, IEnumerable<Folder>> folderValidator,
IRotationValidator<IEnumerable<EmergencyAccessWithIdRequestModel>, IEnumerable<EmergencyAccess>>
emergencyAccessValidator
) )
{ {
_cipherRepository = cipherRepository; _cipherRepository = cipherRepository;
@ -95,6 +113,9 @@ public class AccountsController : Controller
_rotateUserKeyCommand = rotateUserKeyCommand; _rotateUserKeyCommand = rotateUserKeyCommand;
_featureService = featureService; _featureService = featureService;
_currentContext = currentContext; _currentContext = currentContext;
_cipherValidator = cipherValidator;
_folderValidator = folderValidator;
_emergencyAccessValidator = emergencyAccessValidator;
} }
#region DEPRECATED (Moved to Identity Service) #region DEPRECATED (Moved to Identity Service)
@ -110,7 +131,7 @@ public class AccountsController : Controller
kdfInformation = new UserKdfInformation kdfInformation = new UserKdfInformation
{ {
Kdf = KdfType.PBKDF2_SHA256, Kdf = KdfType.PBKDF2_SHA256,
KdfIterations = 100000, KdfIterations = AuthConstants.PBKDF2_ITERATIONS.Default,
}; };
} }
return new PreloginResponseModel(kdfInformation); return new PreloginResponseModel(kdfInformation);
@ -400,21 +421,21 @@ public class AccountsController : Controller
MasterPasswordHash = model.MasterPasswordHash, MasterPasswordHash = model.MasterPasswordHash,
Key = model.Key, Key = model.Key,
PrivateKey = model.PrivateKey, PrivateKey = model.PrivateKey,
// Ciphers = await _cipherValidator.ValidateAsync(user, model.Ciphers), Ciphers = await _cipherValidator.ValidateAsync(user, model.Ciphers),
// Folders = await _folderValidator.ValidateAsync(user, model.Folders), Folders = await _folderValidator.ValidateAsync(user, model.Folders),
// Sends = await _sendValidator.ValidateAsync(user, model.Sends), Sends = new List<Send>(),
// EmergencyAccessKeys = await _emergencyAccessValidator.ValidateAsync(user, model.EmergencyAccessKeys), EmergencyAccessKeys = await _emergencyAccessValidator.ValidateAsync(user, model.EmergencyAccessKeys),
// ResetPasswordKeys = await _accountRecoveryValidator.ValidateAsync(user, model.ResetPasswordKeys), ResetPasswordKeys = new List<OrganizationUser>(),
}; };
result = await _rotateUserKeyCommand.RotateUserKeyAsync(dataModel); result = await _rotateUserKeyCommand.RotateUserKeyAsync(user, dataModel);
} }
else else
{ {
var ciphers = new List<Cipher>(); var ciphers = new List<Cipher>();
if (model.Ciphers.Any()) if (model.Ciphers.Any())
{ {
var existingCiphers = await _cipherRepository.GetManyByUserIdAsync(user.Id); var existingCiphers = await _cipherRepository.GetManyByUserIdAsync(user.Id, useFlexibleCollections: UseFlexibleCollections);
ciphers.AddRange(existingCiphers ciphers.AddRange(existingCiphers
.Join(model.Ciphers, c => c.Id, c => c.Id, (existing, c) => c.ToCipher(existing))); .Join(model.Ciphers, c => c.Id, c => c.Id, (existing, c) => c.ToCipher(existing)));
} }

View File

@ -3,10 +3,10 @@ using Bit.Api.Auth.Models.Request;
using Bit.Api.Auth.Models.Response; using Bit.Api.Auth.Models.Response;
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Api.Vault.Models.Response; using Bit.Api.Vault.Models.Response;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Models.Api.Response;
using Bit.Core.Auth.Services; using Bit.Core.Auth.Services;
using Bit.Core.Entities;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Api.Response;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services; using Bit.Core.Services;
using Bit.Core.Settings; using Bit.Core.Settings;

View File

@ -3,9 +3,10 @@ using Bit.Api.Auth.Models.Request.Webauthn;
using Bit.Api.Auth.Models.Response.WebAuthn; using Bit.Api.Auth.Models.Response.WebAuthn;
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Core; using Bit.Core;
using Bit.Core.AdminConsole.Enums;
using Bit.Core.AdminConsole.Services;
using Bit.Core.Auth.Models.Business.Tokenables; using Bit.Core.Auth.Models.Business.Tokenables;
using Bit.Core.Auth.Repositories; using Bit.Core.Auth.Repositories;
using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Services; using Bit.Core.Services;
using Bit.Core.Tokens; using Bit.Core.Tokens;

View File

@ -2,11 +2,10 @@
using Bit.Core.Auth.Models.Api.Request.Accounts; using Bit.Core.Auth.Models.Api.Request.Accounts;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Utilities;
namespace Bit.Api.Auth.Models.Request.Accounts; namespace Bit.Api.Auth.Models.Request.Accounts;
public class SetKeyConnectorKeyRequestModel : IValidatableObject public class SetKeyConnectorKeyRequestModel
{ {
[Required] [Required]
public string Key { get; set; } public string Key { get; set; }
@ -31,9 +30,4 @@ public class SetKeyConnectorKeyRequestModel : IValidatableObject
Keys.ToUser(existingUser); Keys.ToUser(existingUser);
return existingUser; return existingUser;
} }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
return KdfSettingsValidator.Validate(Kdf, KdfIterations, KdfMemory, KdfParallelism);
}
} }

View File

@ -2,11 +2,10 @@
using Bit.Core.Auth.Models.Api.Request.Accounts; using Bit.Core.Auth.Models.Api.Request.Accounts;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Utilities;
namespace Bit.Api.Auth.Models.Request.Accounts; namespace Bit.Api.Auth.Models.Request.Accounts;
public class SetPasswordRequestModel : IValidatableObject public class SetPasswordRequestModel
{ {
[Required] [Required]
[StringLength(300)] [StringLength(300)]
@ -35,9 +34,4 @@ public class SetPasswordRequestModel : IValidatableObject
Keys?.ToUser(existingUser); Keys?.ToUser(existingUser);
return existingUser; return existingUser;
} }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
return KdfSettingsValidator.Validate(Kdf, KdfIterations, KdfMemory, KdfParallelism);
}
} }

View File

@ -17,7 +17,7 @@ public class UpdateKeyRequestModel
public IEnumerable<CipherWithIdRequestModel> Ciphers { get; set; } public IEnumerable<CipherWithIdRequestModel> Ciphers { get; set; }
public IEnumerable<FolderWithIdRequestModel> Folders { get; set; } public IEnumerable<FolderWithIdRequestModel> Folders { get; set; }
public IEnumerable<SendWithIdRequestModel> Sends { get; set; } public IEnumerable<SendWithIdRequestModel> Sends { get; set; }
public IEnumerable<EmergencyAccessUpdateRequestModel> EmergencyAccessKeys { get; set; } public IEnumerable<EmergencyAccessWithIdRequestModel> EmergencyAccessKeys { get; set; }
public IEnumerable<OrganizationUserUpdateRequestModel> ResetPasswordKeys { get; set; } public IEnumerable<OrganizationUserUpdateRequestModel> ResetPasswordKeys { get; set; }
} }

View File

@ -46,3 +46,9 @@ public class EmergencyAccessPasswordRequestModel
[Required] [Required]
public string Key { get; set; } public string Key { get; set; }
} }
public class EmergencyAccessWithIdRequestModel : EmergencyAccessUpdateRequestModel
{
[Required]
public Guid Id { get; set; }
}

View File

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Bit.Api.Auth.Models.Request.Accounts; using Bit.Api.Auth.Models.Request.Accounts;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Auth.Enums; using Bit.Core.Auth.Enums;
using Bit.Core.Auth.Models; using Bit.Core.Auth.Models;
using Bit.Core.Auth.Utilities; using Bit.Core.Auth.Utilities;
@ -203,7 +204,7 @@ public class TwoFactorEmailRequestModel : SecretVerificationRequestModel
[StringLength(256)] [StringLength(256)]
public string Email { get; set; } public string Email { get; set; }
public string AuthRequestId { get; set; } public string AuthRequestId { get; set; }
// An auth session token used for obtaining email and as an authN factor for the sending of emailed 2FA OTPs. // An auth session token used for obtaining email and as an authN factor for the sending of emailed 2FA OTPs.
public string SsoEmail2FaSessionToken { get; set; } public string SsoEmail2FaSessionToken { get; set; }
public User ToUser(User existingUser) public User ToUser(User existingUser)
{ {

View File

@ -1,6 +1,6 @@
using Bit.Core.Auth.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Auth.Entities;
using Bit.Core.Auth.Models.Data; using Bit.Core.Auth.Models.Data;
using Bit.Core.Entities;
using Bit.Core.Models.Api; using Bit.Core.Models.Api;
using Bit.Core.Settings; using Bit.Core.Settings;

View File

@ -1,4 +1,5 @@
using Bit.Core.Auth.Enums; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Auth.Enums;
using Bit.Core.Auth.Models; using Bit.Core.Auth.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Models.Api; using Bit.Core.Models.Api;

View File

@ -1,4 +1,5 @@
using Bit.Core.Auth.Enums; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Auth.Enums;
using Bit.Core.Auth.Models; using Bit.Core.Auth.Models;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Models.Api; using Bit.Core.Models.Api;

View File

@ -0,0 +1,58 @@
using Bit.Api.Auth.Models.Request;
using Bit.Core.Auth.Entities;
using Bit.Core.Entities;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Services;
namespace Bit.Api.Auth.Validators;
public class EmergencyAccessRotationValidator : IRotationValidator<IEnumerable<EmergencyAccessWithIdRequestModel>,
IEnumerable<EmergencyAccess>>
{
private readonly IEmergencyAccessRepository _emergencyAccessRepository;
private readonly IUserService _userService;
public EmergencyAccessRotationValidator(IEmergencyAccessRepository emergencyAccessRepository,
IUserService userService)
{
_emergencyAccessRepository = emergencyAccessRepository;
_userService = userService;
}
public async Task<IEnumerable<EmergencyAccess>> ValidateAsync(User user,
IEnumerable<EmergencyAccessWithIdRequestModel> emergencyAccessKeys)
{
var result = new List<EmergencyAccess>();
if (emergencyAccessKeys == null || !emergencyAccessKeys.Any())
{
return result;
}
var existing = await _emergencyAccessRepository.GetManyDetailsByGrantorIdAsync(user.Id);
if (existing == null || !existing.Any())
{
return result;
}
// Exclude any emergency access that has not been confirmed yet.
existing = existing.Where(ea => ea.KeyEncrypted != null).ToList();
foreach (var ea in existing)
{
var emergencyAccess = emergencyAccessKeys.FirstOrDefault(c => c.Id == ea.Id);
if (emergencyAccess == null)
{
throw new BadRequestException("All existing emergency access keys must be included in the rotation.");
}
if (emergencyAccess.KeyEncrypted == null)
{
throw new BadRequestException("Emergency access keys cannot be set to null during rotation.");
}
result.Add(emergencyAccess.ToEmergencyAccess(ea));
}
return result;
}
}

View File

@ -0,0 +1,15 @@
using Bit.Core.Entities;
namespace Bit.Api.Auth.Validators;
/// <summary>
/// A consistent interface for domains to validate re-encrypted data before saved to database. Some examples are:<br/>
/// - All available encrypted data is accounted for<br/>
/// - All provided encrypted data belongs to the user
/// </summary>
/// <typeparam name="T">Request model</typeparam>
/// <typeparam name="R">Domain model</typeparam>
public interface IRotationValidator<T, R>
{
Task<R> ValidateAsync(User user, T data);
}

View File

@ -4,7 +4,9 @@ using Bit.Api.Vault.AuthorizationHandlers.Collections;
using Bit.Core; using Bit.Core;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
using Bit.Core.Models.Data;
using Bit.Core.OrganizationFeatures.OrganizationCollections.Interfaces; using Bit.Core.OrganizationFeatures.OrganizationCollections.Interfaces;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services; using Bit.Core.Services;
@ -26,6 +28,7 @@ public class CollectionsController : Controller
private readonly ICurrentContext _currentContext; private readonly ICurrentContext _currentContext;
private readonly IBulkAddCollectionAccessCommand _bulkAddCollectionAccessCommand; private readonly IBulkAddCollectionAccessCommand _bulkAddCollectionAccessCommand;
private readonly IFeatureService _featureService; private readonly IFeatureService _featureService;
private readonly IOrganizationUserRepository _organizationUserRepository;
public CollectionsController( public CollectionsController(
ICollectionRepository collectionRepository, ICollectionRepository collectionRepository,
@ -35,7 +38,8 @@ public class CollectionsController : Controller
IAuthorizationService authorizationService, IAuthorizationService authorizationService,
ICurrentContext currentContext, ICurrentContext currentContext,
IBulkAddCollectionAccessCommand bulkAddCollectionAccessCommand, IBulkAddCollectionAccessCommand bulkAddCollectionAccessCommand,
IFeatureService featureService) IFeatureService featureService,
IOrganizationUserRepository organizationUserRepository)
{ {
_collectionRepository = collectionRepository; _collectionRepository = collectionRepository;
_collectionService = collectionService; _collectionService = collectionService;
@ -45,6 +49,7 @@ public class CollectionsController : Controller
_currentContext = currentContext; _currentContext = currentContext;
_bulkAddCollectionAccessCommand = bulkAddCollectionAccessCommand; _bulkAddCollectionAccessCommand = bulkAddCollectionAccessCommand;
_featureService = featureService; _featureService = featureService;
_organizationUserRepository = organizationUserRepository;
} }
private bool FlexibleCollectionsIsEnabled => _featureService.IsEnabled(FeatureFlagKeys.FlexibleCollections, _currentContext); private bool FlexibleCollectionsIsEnabled => _featureService.IsEnabled(FeatureFlagKeys.FlexibleCollections, _currentContext);
@ -168,7 +173,29 @@ public class CollectionsController : Controller
} }
var groups = model.Groups?.Select(g => g.ToSelectionReadOnly()); var groups = model.Groups?.Select(g => g.ToSelectionReadOnly());
var users = model.Users?.Select(g => g.ToSelectionReadOnly()); var users = model.Users?.Select(g => g.ToSelectionReadOnly()).ToList() ?? new List<CollectionAccessSelection>();
// Pre-flexible collections logic assigned Managers to collections they create
var assignUserToCollection =
!FlexibleCollectionsIsEnabled &&
!await _currentContext.EditAnyCollection(orgId) &&
await _currentContext.EditAssignedCollections(orgId);
var isNewCollection = collection.Id == default;
if (assignUserToCollection && isNewCollection && _currentContext.UserId.HasValue)
{
var orgUser = await _organizationUserRepository.GetByOrganizationAsync(orgId, _currentContext.UserId.Value);
// don't add duplicate access if the user has already specified it themselves
var existingAccess = users.Any(u => u.Id == orgUser.Id);
if (orgUser is { Status: OrganizationUserStatusType.Confirmed } && !existingAccess)
{
users.Add(new CollectionAccessSelection
{
Id = orgUser.Id,
ReadOnly = false
});
}
}
await _collectionService.SaveAsync(collection, groups, users); await _collectionService.SaveAsync(collection, groups, users);
return new CollectionResponseModel(collection); return new CollectionResponseModel(collection);

View File

@ -1,9 +1,5 @@
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Core;
using Bit.Core.Context;
using Bit.Core.Enums;
using Bit.Core.Repositories; using Bit.Core.Repositories;
using Bit.Core.Services;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -15,42 +11,14 @@ namespace Bit.Api.Controllers;
public class PlansController : Controller public class PlansController : Controller
{ {
private readonly ITaxRateRepository _taxRateRepository; private readonly ITaxRateRepository _taxRateRepository;
private readonly IFeatureService _featureService;
private readonly ICurrentContext _currentContext;
public PlansController( public PlansController(ITaxRateRepository taxRateRepository) => _taxRateRepository = taxRateRepository;
ITaxRateRepository taxRateRepository,
IFeatureService featureService,
ICurrentContext currentContext)
{
_taxRateRepository = taxRateRepository;
_featureService = featureService;
_currentContext = currentContext;
}
[HttpGet("")] [HttpGet("")]
[AllowAnonymous] [AllowAnonymous]
public ListResponseModel<PlanResponseModel> Get() public ListResponseModel<PlanResponseModel> Get()
{ {
var plansUpgradeIsEnabled = _featureService.IsEnabled(FeatureFlagKeys.BillingPlansUpgrade, _currentContext); var responses = StaticStore.Plans.Select(plan => new PlanResponseModel(plan));
var teamsStarterPlanIsEnabled = _featureService.IsEnabled(FeatureFlagKeys.BillingStarterPlan, _currentContext);
var responses = StaticStore.Plans
// If plans upgrade is disabled, return only the original plans. Otherwise, return everything
.Where(plan => plansUpgradeIsEnabled || plan.Type <= PlanType.EnterpriseAnnually2020 || plan.Type == PlanType.TeamsStarter)
// If teams starter is disabled, don't return that plan, otherwise return everything
.Where(plan => teamsStarterPlanIsEnabled || plan.Product != ProductType.TeamsStarter)
.Select(plan =>
{
if (!plansUpgradeIsEnabled && plan.Type is <= PlanType.EnterpriseAnnually2020 and >= PlanType.TeamsMonthly2020)
{
plan.LegacyYear = null;
}
else if (plansUpgradeIsEnabled && plan.Type is <= PlanType.EnterpriseAnnually2020 and >= PlanType.TeamsMonthly2020)
{
plan.LegacyYear = 2023;
}
return new PlanResponseModel(plan);
});
return new ListResponseModel<PlanResponseModel>(responses); return new ListResponseModel<PlanResponseModel>(responses);
} }

View File

@ -1,14 +1,16 @@
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
namespace Bit.Api.Models.Request.Organizations; namespace Bit.Api.Models.Request.Organizations;
public class OrganizationCollectionManagementUpdateRequestModel public class OrganizationCollectionManagementUpdateRequestModel
{ {
public bool LimitCreateDeleteOwnerAdmin { get; set; } public bool LimitCreateDeleteOwnerAdmin { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }
public virtual Organization ToOrganization(Organization existingOrganization) public virtual Organization ToOrganization(Organization existingOrganization)
{ {
existingOrganization.LimitCollectionCreationDeletion = LimitCreateDeleteOwnerAdmin; existingOrganization.LimitCollectionCreationDeletion = LimitCreateDeleteOwnerAdmin;
existingOrganization.AllowAdminAccessToAllCollectionItems = AllowAdminAccessToAllCollectionItems;
return existingOrganization; return existingOrganization;
} }
} }

View File

@ -1,5 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
namespace Bit.Api.Models.Request.Organizations; namespace Bit.Api.Models.Request.Organizations;

View File

@ -43,12 +43,12 @@ public class DomainsResponseModel : ResponseModel
IEnumerable<GlobalEquivalentDomainsType> excludedDomains, IEnumerable<GlobalEquivalentDomainsType> excludedDomains,
bool excluded) bool excluded)
{ {
Type = globalDomain; Type = (byte)globalDomain;
Domains = domains; Domains = domains;
Excluded = excluded && (excludedDomains?.Contains(globalDomain) ?? false); Excluded = excluded && (excludedDomains?.Contains(globalDomain) ?? false);
} }
public GlobalEquivalentDomainsType Type { get; set; } public byte Type { get; set; }
public IEnumerable<string> Domains { get; set; } public IEnumerable<string> Domains { get; set; }
public bool Excluded { get; set; } public bool Excluded { get; set; }
} }

View File

@ -31,8 +31,8 @@ public class Program
return e.Level >= globalSettings.MinLogLevel.ApiSettings.IpRateLimit; return e.Level >= globalSettings.MinLogLevel.ApiSettings.IpRateLimit;
} }
if (context.Contains("IdentityServer4.Validation.TokenValidator") || if (context.Contains("Duende.IdentityServer.Validation.TokenValidator") ||
context.Contains("IdentityServer4.Validation.TokenRequestValidator")) context.Contains("Duende.IdentityServer.Validation.TokenRequestValidator"))
{ {
return e.Level >= globalSettings.MinLogLevel.ApiSettings.IdentityToken; return e.Level >= globalSettings.MinLogLevel.ApiSettings.IdentityToken;
} }

View File

@ -36,12 +36,12 @@ public class SMImportRequestModel
[Required] [Required]
[EncryptedString] [EncryptedString]
[EncryptedStringLength(1000)] [EncryptedStringLength(35000)]
public string Value { get; set; } public string Value { get; set; }
[Required] [Required]
[EncryptedString] [EncryptedString]
[EncryptedStringLength(1000)] [EncryptedStringLength(10000)]
public string Note { get; set; } public string Note { get; set; }
[Required] [Required]

View File

@ -7,6 +7,11 @@ using Stripe;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using IdentityModel; using IdentityModel;
using System.Globalization; using System.Globalization;
using Bit.Api.Auth.Models.Request;
using Bit.Api.Auth.Validators;
using Bit.Api.Vault.Models.Request;
using Bit.Api.Vault.Validators;
using Bit.Core.Auth.Entities;
using Bit.Core.IdentityServer; using Bit.Core.IdentityServer;
using Bit.SharedWeb.Health; using Bit.SharedWeb.Health;
using Microsoft.IdentityModel.Logging; using Microsoft.IdentityModel.Logging;
@ -18,6 +23,7 @@ using Bit.Core.Auth.Identity;
using Bit.Core.Auth.UserFeatures.UserKey; using Bit.Core.Auth.UserFeatures.UserKey;
using Bit.Core.Auth.UserFeatures.UserKey.Implementations; using Bit.Core.Auth.UserFeatures.UserKey.Implementations;
using Bit.Core.OrganizationFeatures.OrganizationSubscriptions; using Bit.Core.OrganizationFeatures.OrganizationSubscriptions;
using Bit.Core.Vault.Entities;
#if !OSS #if !OSS
using Bit.Commercial.Core.SecretsManager; using Bit.Commercial.Core.SecretsManager;
@ -135,6 +141,15 @@ public class Startup
// Key Rotation // Key Rotation
services.AddScoped<IRotateUserKeyCommand, RotateUserKeyCommand>(); services.AddScoped<IRotateUserKeyCommand, RotateUserKeyCommand>();
services
.AddScoped<IRotationValidator<IEnumerable<EmergencyAccessWithIdRequestModel>, IEnumerable<EmergencyAccess>>,
EmergencyAccessRotationValidator>();
services
.AddScoped<IRotationValidator<IEnumerable<CipherWithIdRequestModel>, IEnumerable<Cipher>>,
CipherRotationValidator>();
services
.AddScoped<IRotationValidator<IEnumerable<FolderWithIdRequestModel>, IEnumerable<Folder>>,
FolderRotationValidator>();
// Services // Services
services.AddBaseServices(globalSettings); services.AddBaseServices(globalSettings);

View File

@ -1,4 +1,5 @@
using Bit.Core; #nullable enable
using Bit.Core;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
@ -19,6 +20,7 @@ public class CollectionAuthorizationHandler : BulkAuthorizationHandler<Collectio
private readonly ICurrentContext _currentContext; private readonly ICurrentContext _currentContext;
private readonly ICollectionRepository _collectionRepository; private readonly ICollectionRepository _collectionRepository;
private readonly IFeatureService _featureService; private readonly IFeatureService _featureService;
private Guid _targetOrganizationId;
public CollectionAuthorizationHandler(ICurrentContext currentContext, ICollectionRepository collectionRepository, public CollectionAuthorizationHandler(ICurrentContext currentContext, ICollectionRepository collectionRepository,
IFeatureService featureService) IFeatureService featureService)
@ -29,7 +31,7 @@ public class CollectionAuthorizationHandler : BulkAuthorizationHandler<Collectio
} }
protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context,
CollectionOperationRequirement requirement, ICollection<Collection> resources) CollectionOperationRequirement requirement, ICollection<Collection>? resources)
{ {
if (!_featureService.IsEnabled(FeatureFlagKeys.FlexibleCollections, _currentContext)) if (!_featureService.IsEnabled(FeatureFlagKeys.FlexibleCollections, _currentContext))
{ {
@ -50,21 +52,15 @@ public class CollectionAuthorizationHandler : BulkAuthorizationHandler<Collectio
return; return;
} }
var targetOrganizationId = resources.First().OrganizationId; _targetOrganizationId = resources.First().OrganizationId;
// Ensure all target collections belong to the same organization // Ensure all target collections belong to the same organization
if (resources.Any(tc => tc.OrganizationId != targetOrganizationId)) if (resources.Any(tc => tc.OrganizationId != _targetOrganizationId))
{ {
throw new BadRequestException("Requested collections must belong to the same organization."); throw new BadRequestException("Requested collections must belong to the same organization.");
} }
// Acting user is not a member of the target organization, fail var org = _currentContext.GetOrganization(_targetOrganizationId);
var org = _currentContext.GetOrganization(targetOrganizationId);
if (org == null)
{
context.Fail();
return;
}
switch (requirement) switch (requirement)
{ {
@ -83,95 +79,100 @@ public class CollectionAuthorizationHandler : BulkAuthorizationHandler<Collectio
} }
private async Task CanCreateAsync(AuthorizationHandlerContext context, CollectionOperationRequirement requirement, private async Task CanCreateAsync(AuthorizationHandlerContext context, CollectionOperationRequirement requirement,
CurrentContextOrganization org) CurrentContextOrganization? org)
{ {
// If false, all organization members are allowed to create collections // If the limit collection management setting is disabled, allow any user to create collections
if (!org.LimitCollectionCreationDeletion) // Otherwise, Owners, Admins, and users with CreateNewCollections permission can always create collections
if (org is
{ LimitCollectionCreationDeletion: false } or
{ Type: OrganizationUserType.Owner or OrganizationUserType.Admin } or
{ Permissions.CreateNewCollections: true })
{ {
context.Succeed(requirement); context.Succeed(requirement);
return; return;
} }
// Owners, Admins, Providers, and users with CreateNewCollections permission can always create collections // Allow provider users to create collections if they are a provider for the target organization
if ( if (await _currentContext.ProviderUserForOrgAsync(_targetOrganizationId))
org.Type is OrganizationUserType.Owner or OrganizationUserType.Admin ||
org.Permissions is { CreateNewCollections: true } ||
await _currentContext.ProviderUserForOrgAsync(org.Id))
{ {
context.Succeed(requirement); context.Succeed(requirement);
return;
} }
context.Fail();
} }
private async Task CanDeleteAsync(AuthorizationHandlerContext context, CollectionOperationRequirement requirement, private async Task CanDeleteAsync(AuthorizationHandlerContext context, CollectionOperationRequirement requirement,
ICollection<Collection> resources, CurrentContextOrganization org) ICollection<Collection> resources, CurrentContextOrganization? org)
{ {
// Owners, Admins, Providers, and users with DeleteAnyCollection permission can always delete collections // Owners, Admins, and users with DeleteAnyCollection permission can always delete collections
if ( if (org is
org.Type is OrganizationUserType.Owner or OrganizationUserType.Admin || { Type: OrganizationUserType.Owner or OrganizationUserType.Admin } or
org.Permissions is { DeleteAnyCollection: true } || { Permissions.DeleteAnyCollection: true })
await _currentContext.ProviderUserForOrgAsync(org.Id))
{ {
context.Succeed(requirement); context.Succeed(requirement);
return; return;
} }
// The limit collection management setting is enabled and we are not an Admin (above condition), fail // The limit collection management setting is disabled,
if (org.LimitCollectionCreationDeletion) // ensure acting user has manage permissions for all collections being deleted
if (org is { LimitCollectionCreationDeletion: false })
{ {
context.Fail(); var manageableCollectionIds =
return; (await _collectionRepository.GetManyByUserIdAsync(_currentContext.UserId!.Value))
.Where(c => c.Manage && c.OrganizationId == org.Id)
.Select(c => c.Id)
.ToHashSet();
// The acting user has permission to manage all target collections, succeed
if (resources.All(c => manageableCollectionIds.Contains(c.Id)))
{
context.Succeed(requirement);
return;
}
} }
// Other members types should have the Manage capability for all collections being deleted // Allow providers to delete collections if they are a provider for the target organization
var manageableCollectionIds = if (await _currentContext.ProviderUserForOrgAsync(_targetOrganizationId))
(await _collectionRepository.GetManyByUserIdAsync(_currentContext.UserId!.Value))
.Where(c => c.Manage && c.OrganizationId == org.Id)
.Select(c => c.Id)
.ToHashSet();
// The acting user does not have permission to manage all target collections, fail
if (resources.Any(c => !manageableCollectionIds.Contains(c.Id)))
{ {
context.Fail(); context.Succeed(requirement);
return;
} }
context.Succeed(requirement);
} }
/// <summary> /// <summary>
/// Ensures the acting user is allowed to manage access permissions for the target collections. /// Ensures the acting user is allowed to manage access permissions for the target collections.
/// </summary> /// </summary>
private async Task CanManageCollectionAccessAsync(AuthorizationHandlerContext context, private async Task CanManageCollectionAccessAsync(AuthorizationHandlerContext context,
IAuthorizationRequirement requirement, ICollection<Collection> targetCollections, CurrentContextOrganization org) IAuthorizationRequirement requirement, ICollection<Collection> targetCollections,
CurrentContextOrganization? org)
{ {
// Owners, Admins, Providers, and users with EditAnyCollection permission can always manage collection access // Owners, Admins, and users with EditAnyCollection permission can always manage collection access
if ( if (org is
org.Permissions is { EditAnyCollection: true } || { Type: OrganizationUserType.Owner or OrganizationUserType.Admin } or
org.Type is OrganizationUserType.Owner or OrganizationUserType.Admin || { Permissions.EditAnyCollection: true })
await _currentContext.ProviderUserForOrgAsync(org.Id))
{ {
context.Succeed(requirement); context.Succeed(requirement);
return; return;
} }
// List of collection Ids the acting user is allowed to manage // Only check collection management permissions if the user is a member of the target organization (org != null)
var manageableCollectionIds = if (org is not null)
(await _collectionRepository.GetManyByUserIdAsync(_currentContext.UserId!.Value))
.Where(c => c.Manage && c.OrganizationId == org.Id)
.Select(c => c.Id)
.ToHashSet();
// The acting user does not have permission to manage all target collections, fail
if (targetCollections.Any(tc => !manageableCollectionIds.Contains(tc.Id)))
{ {
context.Fail(); var manageableCollectionIds =
return; (await _collectionRepository.GetManyByUserIdAsync(_currentContext.UserId!.Value))
.Where(c => c.Manage && c.OrganizationId == org.Id)
.Select(c => c.Id)
.ToHashSet();
// The acting user has permission to manage all target collections, succeed
if (targetCollections.All(c => manageableCollectionIds.Contains(c.Id)))
{
context.Succeed(requirement);
return;
}
} }
context.Succeed(requirement); // Allow providers to manage collections if they are a provider for the target organization
if (await _currentContext.ProviderUserForOrgAsync(_targetOrganizationId))
{
context.Succeed(requirement);
}
} }
} }

View File

@ -40,6 +40,10 @@ public class CiphersController : Controller
private readonly ILogger<CiphersController> _logger; private readonly ILogger<CiphersController> _logger;
private readonly GlobalSettings _globalSettings; private readonly GlobalSettings _globalSettings;
private readonly Version _cipherKeyEncryptionMinimumVersion = new Version(Constants.CipherKeyEncryptionMinimumVersion); private readonly Version _cipherKeyEncryptionMinimumVersion = new Version(Constants.CipherKeyEncryptionMinimumVersion);
private readonly IFeatureService _featureService;
private bool UseFlexibleCollections =>
_featureService.IsEnabled(FeatureFlagKeys.FlexibleCollections, _currentContext);
public CiphersController( public CiphersController(
ICipherRepository cipherRepository, ICipherRepository cipherRepository,
@ -50,7 +54,8 @@ public class CiphersController : Controller
IProviderService providerService, IProviderService providerService,
ICurrentContext currentContext, ICurrentContext currentContext,
ILogger<CiphersController> logger, ILogger<CiphersController> logger,
GlobalSettings globalSettings) GlobalSettings globalSettings,
IFeatureService featureService)
{ {
_cipherRepository = cipherRepository; _cipherRepository = cipherRepository;
_collectionCipherRepository = collectionCipherRepository; _collectionCipherRepository = collectionCipherRepository;
@ -61,13 +66,14 @@ public class CiphersController : Controller
_currentContext = currentContext; _currentContext = currentContext;
_logger = logger; _logger = logger;
_globalSettings = globalSettings; _globalSettings = globalSettings;
_featureService = featureService;
} }
[HttpGet("{id}")] [HttpGet("{id}")]
public async Task<CipherResponseModel> Get(string id) public async Task<CipherResponseModel> Get(Guid id)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(new Guid(id), userId); var cipher = await GetByIdAsync(id, userId);
if (cipher == null) if (cipher == null)
{ {
throw new NotFoundException(); throw new NotFoundException();
@ -91,17 +97,16 @@ public class CiphersController : Controller
[HttpGet("{id}/full-details")] [HttpGet("{id}/full-details")]
[HttpGet("{id}/details")] [HttpGet("{id}/details")]
public async Task<CipherDetailsResponseModel> GetDetails(string id) public async Task<CipherDetailsResponseModel> GetDetails(Guid id)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipherId = new Guid(id); var cipher = await GetByIdAsync(id, userId);
var cipher = await _cipherRepository.GetByIdAsync(cipherId, userId);
if (cipher == null) if (cipher == null)
{ {
throw new NotFoundException(); throw new NotFoundException();
} }
var collectionCiphers = await _collectionCipherRepository.GetManyByUserIdCipherIdAsync(userId, cipherId); var collectionCiphers = await _collectionCipherRepository.GetManyByUserIdCipherIdAsync(userId, id, UseFlexibleCollections);
return new CipherDetailsResponseModel(cipher, _globalSettings, collectionCiphers); return new CipherDetailsResponseModel(cipher, _globalSettings, collectionCiphers);
} }
@ -111,11 +116,11 @@ public class CiphersController : Controller
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var hasOrgs = _currentContext.Organizations?.Any() ?? false; var hasOrgs = _currentContext.Organizations?.Any() ?? false;
// TODO: Use hasOrgs proper for cipher listing here? // TODO: Use hasOrgs proper for cipher listing here?
var ciphers = await _cipherRepository.GetManyByUserIdAsync(userId, true || hasOrgs); var ciphers = await _cipherRepository.GetManyByUserIdAsync(userId, useFlexibleCollections: UseFlexibleCollections, withOrganizations: true || hasOrgs);
Dictionary<Guid, IGrouping<Guid, CollectionCipher>> collectionCiphersGroupDict = null; Dictionary<Guid, IGrouping<Guid, CollectionCipher>> collectionCiphersGroupDict = null;
if (hasOrgs) if (hasOrgs)
{ {
var collectionCiphers = await _collectionCipherRepository.GetManyByUserIdAsync(userId); var collectionCiphers = await _collectionCipherRepository.GetManyByUserIdAsync(userId, UseFlexibleCollections);
collectionCiphersGroupDict = collectionCiphers.GroupBy(c => c.CipherId).ToDictionary(s => s.Key); collectionCiphersGroupDict = collectionCiphers.GroupBy(c => c.CipherId).ToDictionary(s => s.Key);
} }
@ -175,7 +180,7 @@ public class CiphersController : Controller
public async Task<CipherResponseModel> Put(Guid id, [FromBody] CipherRequestModel model) public async Task<CipherResponseModel> Put(Guid id, [FromBody] CipherRequestModel model)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(id, userId); var cipher = await GetByIdAsync(id, userId);
if (cipher == null) if (cipher == null)
{ {
throw new NotFoundException(); throw new NotFoundException();
@ -184,7 +189,7 @@ public class CiphersController : Controller
ValidateClientVersionForItemLevelEncryptionSupport(cipher); ValidateClientVersionForItemLevelEncryptionSupport(cipher);
ValidateClientVersionForFido2CredentialSupport(cipher); ValidateClientVersionForFido2CredentialSupport(cipher);
var collectionIds = (await _collectionCipherRepository.GetManyByUserIdCipherIdAsync(userId, id)).Select(c => c.CollectionId).ToList(); var collectionIds = (await _collectionCipherRepository.GetManyByUserIdCipherIdAsync(userId, id, UseFlexibleCollections)).Select(c => c.CollectionId).ToList();
var modelOrgId = string.IsNullOrWhiteSpace(model.OrganizationId) ? var modelOrgId = string.IsNullOrWhiteSpace(model.OrganizationId) ?
(Guid?)null : new Guid(model.OrganizationId); (Guid?)null : new Guid(model.OrganizationId);
if (cipher.OrganizationId != modelOrgId) if (cipher.OrganizationId != modelOrgId)
@ -215,7 +220,7 @@ public class CiphersController : Controller
throw new NotFoundException(); throw new NotFoundException();
} }
var collectionIds = (await _collectionCipherRepository.GetManyByUserIdCipherIdAsync(userId, id)).Select(c => c.CollectionId).ToList(); var collectionIds = (await _collectionCipherRepository.GetManyByUserIdCipherIdAsync(userId, id, UseFlexibleCollections)).Select(c => c.CollectionId).ToList();
// object cannot be a descendant of CipherDetails, so let's clone it. // object cannot be a descendant of CipherDetails, so let's clone it.
var cipherClone = model.ToCipher(cipher).Clone(); var cipherClone = model.ToCipher(cipher).Clone();
await _cipherService.SaveAsync(cipherClone, userId, model.LastKnownRevisionDate, collectionIds, true, false); await _cipherService.SaveAsync(cipherClone, userId, model.LastKnownRevisionDate, collectionIds, true, false);
@ -247,25 +252,23 @@ public class CiphersController : Controller
[HttpPut("{id}/partial")] [HttpPut("{id}/partial")]
[HttpPost("{id}/partial")] [HttpPost("{id}/partial")]
public async Task<CipherResponseModel> PutPartial(string id, [FromBody] CipherPartialRequestModel model) public async Task<CipherResponseModel> PutPartial(Guid id, [FromBody] CipherPartialRequestModel model)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var folderId = string.IsNullOrWhiteSpace(model.FolderId) ? null : (Guid?)new Guid(model.FolderId); var folderId = string.IsNullOrWhiteSpace(model.FolderId) ? null : (Guid?)new Guid(model.FolderId);
var cipherId = new Guid(id); await _cipherRepository.UpdatePartialAsync(id, userId, folderId, model.Favorite);
await _cipherRepository.UpdatePartialAsync(cipherId, userId, folderId, model.Favorite);
var cipher = await _cipherRepository.GetByIdAsync(cipherId, userId); var cipher = await GetByIdAsync(id, userId);
var response = new CipherResponseModel(cipher, _globalSettings); var response = new CipherResponseModel(cipher, _globalSettings);
return response; return response;
} }
[HttpPut("{id}/share")] [HttpPut("{id}/share")]
[HttpPost("{id}/share")] [HttpPost("{id}/share")]
public async Task<CipherResponseModel> PutShare(string id, [FromBody] CipherShareRequestModel model) public async Task<CipherResponseModel> PutShare(Guid id, [FromBody] CipherShareRequestModel model)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipherId = new Guid(id); var cipher = await _cipherRepository.GetByIdAsync(id);
var cipher = await _cipherRepository.GetByIdAsync(cipherId);
if (cipher == null || cipher.UserId != userId || if (cipher == null || cipher.UserId != userId ||
!await _currentContext.OrganizationUser(new Guid(model.Cipher.OrganizationId))) !await _currentContext.OrganizationUser(new Guid(model.Cipher.OrganizationId)))
{ {
@ -279,17 +282,17 @@ public class CiphersController : Controller
await _cipherService.ShareAsync(original, model.Cipher.ToCipher(cipher), new Guid(model.Cipher.OrganizationId), await _cipherService.ShareAsync(original, model.Cipher.ToCipher(cipher), new Guid(model.Cipher.OrganizationId),
model.CollectionIds.Select(c => new Guid(c)), userId, model.Cipher.LastKnownRevisionDate); model.CollectionIds.Select(c => new Guid(c)), userId, model.Cipher.LastKnownRevisionDate);
var sharedCipher = await _cipherRepository.GetByIdAsync(cipherId, userId); var sharedCipher = await GetByIdAsync(id, userId);
var response = new CipherResponseModel(sharedCipher, _globalSettings); var response = new CipherResponseModel(sharedCipher, _globalSettings);
return response; return response;
} }
[HttpPut("{id}/collections")] [HttpPut("{id}/collections")]
[HttpPost("{id}/collections")] [HttpPost("{id}/collections")]
public async Task PutCollections(string id, [FromBody] CipherCollectionsRequestModel model) public async Task PutCollections(Guid id, [FromBody] CipherCollectionsRequestModel model)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(new Guid(id), userId); var cipher = await GetByIdAsync(id, userId);
if (cipher == null || !cipher.OrganizationId.HasValue || if (cipher == null || !cipher.OrganizationId.HasValue ||
!await _currentContext.OrganizationUser(cipher.OrganizationId.Value)) !await _currentContext.OrganizationUser(cipher.OrganizationId.Value))
{ {
@ -318,10 +321,10 @@ public class CiphersController : Controller
[HttpDelete("{id}")] [HttpDelete("{id}")]
[HttpPost("{id}/delete")] [HttpPost("{id}/delete")]
public async Task Delete(string id) public async Task Delete(Guid id)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(new Guid(id), userId); var cipher = await GetByIdAsync(id, userId);
if (cipher == null) if (cipher == null)
{ {
throw new NotFoundException(); throw new NotFoundException();
@ -380,10 +383,10 @@ public class CiphersController : Controller
} }
[HttpPut("{id}/delete")] [HttpPut("{id}/delete")]
public async Task PutDelete(string id) public async Task PutDelete(Guid id)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(new Guid(id), userId); var cipher = await GetByIdAsync(id, userId);
if (cipher == null) if (cipher == null)
{ {
throw new NotFoundException(); throw new NotFoundException();
@ -436,10 +439,10 @@ public class CiphersController : Controller
} }
[HttpPut("{id}/restore")] [HttpPut("{id}/restore")]
public async Task<CipherResponseModel> PutRestore(string id) public async Task<CipherResponseModel> PutRestore(Guid id)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(new Guid(id), userId); var cipher = await GetByIdAsync(id, userId);
if (cipher == null) if (cipher == null)
{ {
throw new NotFoundException(); throw new NotFoundException();
@ -526,7 +529,7 @@ public class CiphersController : Controller
} }
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var ciphers = await _cipherRepository.GetManyByUserIdAsync(userId, false); var ciphers = await _cipherRepository.GetManyByUserIdAsync(userId, useFlexibleCollections: UseFlexibleCollections, withOrganizations: false);
var ciphersDict = ciphers.ToDictionary(c => c.Id); var ciphersDict = ciphers.ToDictionary(c => c.Id);
var shareCiphers = new List<(Cipher, DateTime?)>(); var shareCiphers = new List<(Cipher, DateTime?)>();
@ -581,13 +584,12 @@ public class CiphersController : Controller
} }
[HttpPost("{id}/attachment/v2")] [HttpPost("{id}/attachment/v2")]
public async Task<AttachmentUploadDataResponseModel> PostAttachment(string id, [FromBody] AttachmentRequestModel request) public async Task<AttachmentUploadDataResponseModel> PostAttachment(Guid id, [FromBody] AttachmentRequestModel request)
{ {
var idGuid = new Guid(id);
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = request.AdminRequest ? var cipher = request.AdminRequest ?
await _cipherRepository.GetOrganizationDetailsByIdAsync(idGuid) : await _cipherRepository.GetOrganizationDetailsByIdAsync(id) :
await _cipherRepository.GetByIdAsync(idGuid, userId); await GetByIdAsync(id, userId);
if (cipher == null || (request.AdminRequest && (!cipher.OrganizationId.HasValue || if (cipher == null || (request.AdminRequest && (!cipher.OrganizationId.HasValue ||
!await _currentContext.EditAnyCollection(cipher.OrganizationId.Value)))) !await _currentContext.EditAnyCollection(cipher.OrganizationId.Value))))
@ -615,11 +617,10 @@ public class CiphersController : Controller
} }
[HttpGet("{id}/attachment/{attachmentId}/renew")] [HttpGet("{id}/attachment/{attachmentId}/renew")]
public async Task<AttachmentUploadDataResponseModel> RenewFileUploadUrl(string id, string attachmentId) public async Task<AttachmentUploadDataResponseModel> RenewFileUploadUrl(Guid id, string attachmentId)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipherId = new Guid(id); var cipher = await GetByIdAsync(id, userId);
var cipher = await _cipherRepository.GetByIdAsync(cipherId, userId);
var attachments = cipher?.GetAttachments(); var attachments = cipher?.GetAttachments();
if (attachments == null || !attachments.ContainsKey(attachmentId) || attachments[attachmentId].Validated) if (attachments == null || !attachments.ContainsKey(attachmentId) || attachments[attachmentId].Validated)
@ -638,7 +639,7 @@ public class CiphersController : Controller
[SelfHosted(SelfHostedOnly = true)] [SelfHosted(SelfHostedOnly = true)]
[RequestSizeLimit(Constants.FileSize501mb)] [RequestSizeLimit(Constants.FileSize501mb)]
[DisableFormValueModelBinding] [DisableFormValueModelBinding]
public async Task PostFileForExistingAttachment(string id, string attachmentId) public async Task PostFileForExistingAttachment(Guid id, string attachmentId)
{ {
if (!Request?.ContentType.Contains("multipart/") ?? true) if (!Request?.ContentType.Contains("multipart/") ?? true)
{ {
@ -646,7 +647,7 @@ public class CiphersController : Controller
} }
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(new Guid(id), userId); var cipher = await GetByIdAsync(id, userId);
var attachments = cipher?.GetAttachments(); var attachments = cipher?.GetAttachments();
if (attachments == null || !attachments.ContainsKey(attachmentId)) if (attachments == null || !attachments.ContainsKey(attachmentId))
{ {
@ -664,13 +665,12 @@ public class CiphersController : Controller
[Obsolete("Deprecated Attachments API", false)] [Obsolete("Deprecated Attachments API", false)]
[RequestSizeLimit(Constants.FileSize101mb)] [RequestSizeLimit(Constants.FileSize101mb)]
[DisableFormValueModelBinding] [DisableFormValueModelBinding]
public async Task<CipherResponseModel> PostAttachment(string id) public async Task<CipherResponseModel> PostAttachment(Guid id)
{ {
ValidateAttachment(); ValidateAttachment();
var idGuid = new Guid(id);
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(idGuid, userId); var cipher = await GetByIdAsync(id, userId);
if (cipher == null) if (cipher == null)
{ {
throw new NotFoundException(); throw new NotFoundException();
@ -711,10 +711,10 @@ public class CiphersController : Controller
} }
[HttpGet("{id}/attachment/{attachmentId}")] [HttpGet("{id}/attachment/{attachmentId}")]
public async Task<AttachmentResponseModel> GetAttachmentData(string id, string attachmentId) public async Task<AttachmentResponseModel> GetAttachmentData(Guid id, string attachmentId)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(new Guid(id), userId); var cipher = await GetByIdAsync(id, userId);
var result = await _cipherService.GetAttachmentDownloadDataAsync(cipher, attachmentId); var result = await _cipherService.GetAttachmentDownloadDataAsync(cipher, attachmentId);
return new AttachmentResponseModel(result); return new AttachmentResponseModel(result);
} }
@ -742,11 +742,10 @@ public class CiphersController : Controller
[HttpDelete("{id}/attachment/{attachmentId}")] [HttpDelete("{id}/attachment/{attachmentId}")]
[HttpPost("{id}/attachment/{attachmentId}/delete")] [HttpPost("{id}/attachment/{attachmentId}/delete")]
public async Task DeleteAttachment(string id, string attachmentId) public async Task DeleteAttachment(Guid id, string attachmentId)
{ {
var idGuid = new Guid(id);
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var cipher = await _cipherRepository.GetByIdAsync(idGuid, userId); var cipher = await GetByIdAsync(id, userId);
if (cipher == null) if (cipher == null)
{ {
throw new NotFoundException(); throw new NotFoundException();
@ -836,4 +835,9 @@ public class CiphersController : Controller
} }
} }
} }
private async Task<CipherDetails> GetByIdAsync(Guid cipherId, Guid userId)
{
return await _cipherRepository.GetByIdAsync(cipherId, userId, UseFlexibleCollections);
}
} }

View File

@ -1,6 +1,9 @@
using Bit.Api.Vault.Models.Response; using Bit.Api.Vault.Models.Response;
using Bit.Core;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Enums.Provider; using Bit.Core.AdminConsole.Enums.Provider;
using Bit.Core.AdminConsole.Repositories; using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Context;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Exceptions; using Bit.Core.Exceptions;
@ -29,6 +32,11 @@ public class SyncController : Controller
private readonly IPolicyRepository _policyRepository; private readonly IPolicyRepository _policyRepository;
private readonly ISendRepository _sendRepository; private readonly ISendRepository _sendRepository;
private readonly GlobalSettings _globalSettings; private readonly GlobalSettings _globalSettings;
private readonly ICurrentContext _currentContext;
private readonly IFeatureService _featureService;
private bool UseFlexibleCollections =>
_featureService.IsEnabled(FeatureFlagKeys.FlexibleCollections, _currentContext);
public SyncController( public SyncController(
IUserService userService, IUserService userService,
@ -40,7 +48,9 @@ public class SyncController : Controller
IProviderUserRepository providerUserRepository, IProviderUserRepository providerUserRepository,
IPolicyRepository policyRepository, IPolicyRepository policyRepository,
ISendRepository sendRepository, ISendRepository sendRepository,
GlobalSettings globalSettings) GlobalSettings globalSettings,
ICurrentContext currentContext,
IFeatureService featureService)
{ {
_userService = userService; _userService = userService;
_folderRepository = folderRepository; _folderRepository = folderRepository;
@ -52,6 +62,8 @@ public class SyncController : Controller
_policyRepository = policyRepository; _policyRepository = policyRepository;
_sendRepository = sendRepository; _sendRepository = sendRepository;
_globalSettings = globalSettings; _globalSettings = globalSettings;
_currentContext = currentContext;
_featureService = featureService;
} }
[HttpGet("")] [HttpGet("")]
@ -73,7 +85,7 @@ public class SyncController : Controller
var hasEnabledOrgs = organizationUserDetails.Any(o => o.Enabled); var hasEnabledOrgs = organizationUserDetails.Any(o => o.Enabled);
var folders = await _folderRepository.GetManyByUserIdAsync(user.Id); var folders = await _folderRepository.GetManyByUserIdAsync(user.Id);
var ciphers = await _cipherRepository.GetManyByUserIdAsync(user.Id, hasEnabledOrgs); var ciphers = await _cipherRepository.GetManyByUserIdAsync(user.Id, useFlexibleCollections: UseFlexibleCollections, withOrganizations: hasEnabledOrgs);
var sends = await _sendRepository.GetManyByUserIdAsync(user.Id); var sends = await _sendRepository.GetManyByUserIdAsync(user.Id);
IEnumerable<CollectionDetails> collections = null; IEnumerable<CollectionDetails> collections = null;
@ -83,7 +95,7 @@ public class SyncController : Controller
if (hasEnabledOrgs) if (hasEnabledOrgs)
{ {
collections = await _collectionRepository.GetManyByUserIdAsync(user.Id); collections = await _collectionRepository.GetManyByUserIdAsync(user.Id);
var collectionCiphers = await _collectionCipherRepository.GetManyByUserIdAsync(user.Id); var collectionCiphers = await _collectionCipherRepository.GetManyByUserIdAsync(user.Id, UseFlexibleCollections);
collectionCiphersGroupDict = collectionCiphers.GroupBy(c => c.CipherId).ToDictionary(s => s.Key); collectionCiphersGroupDict = collectionCiphers.GroupBy(c => c.CipherId).ToDictionary(s => s.Key);
} }

View File

@ -18,6 +18,7 @@ public class CipherFido2CredentialModel
RpId = data.RpId; RpId = data.RpId;
RpName = data.RpName; RpName = data.RpName;
UserHandle = data.UserHandle; UserHandle = data.UserHandle;
UserName = data.UserName;
UserDisplayName = data.UserDisplayName; UserDisplayName = data.UserDisplayName;
Counter = data.Counter; Counter = data.Counter;
Discoverable = data.Discoverable; Discoverable = data.Discoverable;
@ -50,6 +51,9 @@ public class CipherFido2CredentialModel
public string UserHandle { get; set; } public string UserHandle { get; set; }
[EncryptedString] [EncryptedString]
[EncryptedStringLength(1000)] [EncryptedStringLength(1000)]
public string UserName { get; set; }
[EncryptedString]
[EncryptedStringLength(1000)]
public string UserDisplayName { get; set; } public string UserDisplayName { get; set; }
[EncryptedString] [EncryptedString]
[EncryptedStringLength(1000)] [EncryptedStringLength(1000)]
@ -72,6 +76,7 @@ public class CipherFido2CredentialModel
RpId = RpId, RpId = RpId,
RpName = RpName, RpName = RpName,
UserHandle = UserHandle, UserHandle = UserHandle,
UserName = UserName,
UserDisplayName = UserDisplayName, UserDisplayName = UserDisplayName,
Counter = Counter, Counter = Counter,
Discoverable = Discoverable, Discoverable = Discoverable,

View File

@ -1,9 +1,10 @@
using Bit.Api.Models.Response; using Bit.Api.Models.Response;
using Bit.Api.Tools.Models.Response; using Bit.Api.Tools.Models.Response;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Models.Api.Response;
using Bit.Core.AdminConsole.Models.Data.Provider; using Bit.Core.AdminConsole.Models.Data.Provider;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Models.Api; using Bit.Core.Models.Api;
using Bit.Core.Models.Api.Response;
using Bit.Core.Models.Data; using Bit.Core.Models.Data;
using Bit.Core.Models.Data.Organizations.OrganizationUsers; using Bit.Core.Models.Data.Organizations.OrganizationUsers;
using Bit.Core.Settings; using Bit.Core.Settings;

View File

@ -0,0 +1,56 @@
using Bit.Api.Auth.Validators;
using Bit.Api.Vault.Models.Request;
using Bit.Core;
using Bit.Core.Context;
using Bit.Core.Entities;
using Bit.Core.Exceptions;
using Bit.Core.Services;
using Bit.Core.Vault.Entities;
using Bit.Core.Vault.Repositories;
namespace Bit.Api.Vault.Validators;
public class CipherRotationValidator : IRotationValidator<IEnumerable<CipherWithIdRequestModel>, IEnumerable<Cipher>>
{
private readonly ICipherRepository _cipherRepository;
private readonly ICurrentContext _currentContext;
private readonly IFeatureService _featureService;
private bool UseFlexibleCollections =>
_featureService.IsEnabled(FeatureFlagKeys.FlexibleCollections, _currentContext);
public CipherRotationValidator(ICipherRepository cipherRepository, ICurrentContext currentContext,
IFeatureService featureService)
{
_cipherRepository = cipherRepository;
_currentContext = currentContext;
_featureService = featureService;
}
public async Task<IEnumerable<Cipher>> ValidateAsync(User user, IEnumerable<CipherWithIdRequestModel> ciphers)
{
var result = new List<Cipher>();
if (ciphers == null || !ciphers.Any())
{
return result;
}
var existingCiphers = await _cipherRepository.GetManyByUserIdAsync(user.Id, UseFlexibleCollections);
if (existingCiphers == null || !existingCiphers.Any())
{
return result;
}
foreach (var existing in existingCiphers)
{
var cipher = ciphers.FirstOrDefault(c => c.Id == existing.Id);
if (cipher == null)
{
throw new BadRequestException("All existing ciphers must be included in the rotation.");
}
result.Add(cipher.ToCipher(existing));
}
return result;
}
}

View File

@ -0,0 +1,44 @@
using Bit.Api.Auth.Validators;
using Bit.Api.Vault.Models.Request;
using Bit.Core.Entities;
using Bit.Core.Exceptions;
using Bit.Core.Vault.Entities;
using Bit.Core.Vault.Repositories;
namespace Bit.Api.Vault.Validators;
public class FolderRotationValidator : IRotationValidator<IEnumerable<FolderWithIdRequestModel>, IEnumerable<Folder>>
{
private readonly IFolderRepository _folderRepository;
public FolderRotationValidator(IFolderRepository folderRepository)
{
_folderRepository = folderRepository;
}
public async Task<IEnumerable<Folder>> ValidateAsync(User user, IEnumerable<FolderWithIdRequestModel> folders)
{
var result = new List<Folder>();
if (folders == null || !folders.Any())
{
return result;
}
var existingFolders = await _folderRepository.GetManyByUserIdAsync(user.Id);
if (existingFolders == null || !existingFolders.Any())
{
return result;
}
foreach (var existing in existingFolders)
{
var folder = folders.FirstOrDefault(c => c.Id == existing.Id);
if (folder == null)
{
throw new BadRequestException("All existing folders must be included in the rotation.");
}
result.Add(folder.ToFolder(existing));
}
return result;
}
}

View File

@ -296,8 +296,8 @@
}, },
"Dapper": { "Dapper": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.123", "resolved": "2.1.24",
"contentHash": "RDFF4rBLLmbpi6pwkY7q/M6UXHRJEOerplDGE5jwEkP/JGJnBauAClYavNKJPW1yOTWRPIyfj4is3EaJxQXILQ==" "contentHash": "/2t2vsdJyZRsk13AsWigZpsuFvEwK+o3v862cEULXoww905gyKhJFSuwmZI/4Ui9COX9ZCFCI09UHyH4wVYl3A=="
}, },
"DnsClient": { "DnsClient": {
"type": "Transitive", "type": "Transitive",
@ -307,6 +307,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fido2": { "Fido2": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.1", "resolved": "3.0.1",
@ -335,57 +353,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"LaunchDarkly.Cache": { "LaunchDarkly.Cache": {
"type": "Transitive", "type": "Transitive",
@ -394,26 +371,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -428,13 +406,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -446,16 +424,16 @@
}, },
"linq2db": { "linq2db": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.2.1", "resolved": "5.3.1",
"contentHash": "OOBM8s39zhbZAgqFnl2KGxT5RqBDw21X69U528qV2PgQispaA3f+or0ILrLEgnNIJuB4EBgaw8gC6ttSHn4X0Q==" "contentHash": "707mIbEmtptvKeUW940UwoNwq05I7OUu0VWtclLtyYaASp+ugX4I/Er1UVpeldsDawqlVMXB5EQ5/Oar6AkUGQ=="
}, },
"linq2db.EntityFrameworkCore": { "linq2db.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.5.0", "resolved": "7.6.0",
"contentHash": "ePHzO99xbObgMLlAFh08of1SnVhg6j4Su9327DrIB7RZWCgtQIX6k+nbl+HRVOooAndZSs7b+DduSgdnJjaJGw==", "contentHash": "T1W9o8wVzApsUwu7SRg/L7487kaiLQYt2AqRVnXVGfobD+ZKy2oRsUMws0PICtciaz4qbfLp/r/+NksfuYsFlw==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "7.0.0", "Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"linq2db": "5.2.1" "linq2db": "5.3.1"
} }
}, },
"MailKit": { "MailKit": {
@ -476,10 +454,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -512,8 +490,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.Azure.Amqp": { "Microsoft.Azure.Amqp": {
"type": "Transitive", "type": "Transitive",
@ -598,48 +576,44 @@
}, },
"Microsoft.Data.SqlClient": { "Microsoft.Data.SqlClient": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.1",
"contentHash": "uu8dfrsx081cSbEevWuZAvqdmANDGJkbLBL2G3j0LAZxX1Oy8RCVAaC4Lcuak6jNicWP6CWvHqBTIEmQNSxQlw==", "contentHash": "MW5E9HFvCaV069o8b6YpuRDPBux8s96qDnOJ+4N9QNUCs7c5W3KxwQ+ftpAjbMUlImL+c9WR+l+f5hzjkqhu2g==",
"dependencies": { "dependencies": {
"Azure.Identity": "1.6.0", "Azure.Identity": "1.7.0",
"Microsoft.Data.SqlClient.SNI.runtime": "5.0.1", "Microsoft.Data.SqlClient.SNI.runtime": "5.1.0",
"Microsoft.Identity.Client": "4.45.0", "Microsoft.Identity.Client": "4.47.2",
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.21.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.24.0",
"Microsoft.SqlServer.Server": "1.0.0", "Microsoft.SqlServer.Server": "1.0.0",
"Microsoft.Win32.Registry": "5.0.0", "System.Configuration.ConfigurationManager": "6.0.1",
"System.Buffers": "4.5.1", "System.Diagnostics.DiagnosticSource": "6.0.0",
"System.Configuration.ConfigurationManager": "5.0.0", "System.Runtime.Caching": "6.0.0",
"System.Diagnostics.DiagnosticSource": "5.0.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime.Caching": "5.0.0",
"System.Security.Cryptography.Cng": "5.0.0", "System.Security.Cryptography.Cng": "5.0.0",
"System.Security.Principal.Windows": "5.0.0", "System.Security.Principal.Windows": "5.0.0",
"System.Text.Encoding.CodePages": "5.0.0", "System.Text.Encoding.CodePages": "6.0.0",
"System.Text.Encodings.Web": "4.7.2" "System.Text.Encodings.Web": "6.0.0"
} }
}, },
"Microsoft.Data.SqlClient.SNI.runtime": { "Microsoft.Data.SqlClient.SNI.runtime": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "y0X5MxiNdbITJYoafJ2ruaX6hqO0twpCGR/ipiDOe85JKLU8WL4TuAQfDe5qtt3bND5Je26HnrarLSAMMnVTNg==" "contentHash": "jVsElisM5sfBzaaV9kdq2NXZLwIbytetnsOIlJ0cQGgQP4zFNBmkfHBnpwtmKrtBJBEV9+9PVQPVrcCVhDgcIg=="
}, },
"Microsoft.Data.Sqlite.Core": { "Microsoft.Data.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", "contentHash": "qvYae3/v9Fvqsjp/7OKQBuJK+Uc3m/WctfpIUMmGMDot2Bd8UWBKiMSlh26UtfQa9x4N+k7NxCT+AbZVoNrCdg==",
"dependencies": { "dependencies": {
"SQLitePCLRaw.core": "2.1.4" "SQLitePCLRaw.core": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore": { "Microsoft.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "contentHash": "0KYkAemPygW6yzifciFlmMzkO4sI4Dw69xLgwg3ui5rXJS5XvzuAWVvfdrKJciqeCbCnVS/ZbOWpcwWgqce5bQ==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.5", "Microsoft.EntityFrameworkCore.Abstractions": "7.0.14",
"Microsoft.EntityFrameworkCore.Analyzers": "7.0.5", "Microsoft.EntityFrameworkCore.Analyzers": "7.0.14",
"Microsoft.Extensions.Caching.Memory": "7.0.0", "Microsoft.Extensions.Caching.Memory": "7.0.0",
"Microsoft.Extensions.DependencyInjection": "7.0.0", "Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.Logging": "7.0.0" "Microsoft.Extensions.Logging": "7.0.0"
@ -647,49 +621,49 @@
}, },
"Microsoft.EntityFrameworkCore.Abstractions": { "Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "iwQso+hFRsEWjhH2WsEQj1D2QE5BlEXiXEt6A3SlYTPRPdZsyTNDeDDEdtxL+H/UJPQgQYY+9SMMRcEiXBmCAA==" "contentHash": "aEcXDSYpDdD5wdIRKTqcS44f3W4capqQ1BWVRPJgacATfHkO62RX9Nnh0hUFg+rei9OLuJp0Y4zsy1fNeOXv5g=="
}, },
"Microsoft.EntityFrameworkCore.Analyzers": { "Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "yMLM/aK1MikVqpjxd7PJ1Pjgztd3VAd26ZHxyjxG3RPeM9cHjvS5tCg9kAAayR6eHmBg0ffZsHdT28WfA5tTlA==" "contentHash": "esI4RF6mix4DDFBhWB9k1vJxAL8GouSf5ZV8oFJoVsIQ9d2J3MPgC1VL2qM9Vw5cH7Vg7TzRyKNpCRXFVkWs9w=="
}, },
"Microsoft.EntityFrameworkCore.Relational": { "Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "u/33DC4S6g2hpMPgBc5Kdnlz//nqHR5c/ovgjtiP/wQ7sOd0EOdygVzUJAAOxCwbtAHDsJXS9Vc3jLFYq0yu8Q==", "contentHash": "MrVBnWOFYwfLMGQfrcIuqEM9Xvokv1vJeYxqNH3K3xOtAdHwHQTrKnpDP97tU+LBlvcnyXAtAtryYcpLXWtRNA==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.5", "Microsoft.EntityFrameworkCore": "7.0.14",
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0" "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite": { "Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "2XPZB9OLF5/m13HgZp7/Dv0u8FWEJzcaBsMYR9Kp3R6aygkb3RnOijofPDTsmdhAqG9YTysCmh2bFaGs0TCc7A==", "contentHash": "8c8Hw2tmfy5YEsi9RL2/u2Qi9IwVbmj/yDlJy4iJPadeE3/AssLrgtobOBz4ftg2y5PVjFL59Gq7YzGLQH5q1A==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.5", "Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.14",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite.Core": { "Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "4C+9ct6A/Bq61Ta9Uh2td4/XwNpRCiPI03SWTa3hPJjA/g8wCw2hetbh3DDe5HcydzgDq/lRRjU/eRy3UODklQ==", "contentHash": "JNUkZVff1V/A/P3JiBbgt+Y2oCQSuzORxE3jOqFDbFjSFu7jHDEetJ/afSF/taa0lbyN9OpvaKjsbKk3Iis29Q==",
"dependencies": { "dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5", "Microsoft.Data.Sqlite.Core": "7.0.14",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5", "Microsoft.EntityFrameworkCore.Relational": "7.0.14",
"Microsoft.Extensions.DependencyModel": "7.0.0" "Microsoft.Extensions.DependencyModel": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.SqlServer": { "Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "cUJqCiamT0EvpKNgZEV5fqNv2MyVfKNgOPQfFINqHiIKHOYrS0nTCUJP97+UuG0JIIrP792/PwnuNjbekImtBg==", "contentHash": "d9hqEw4W/TdQ1WDm03uyFuDoehL6GNq/NMChFaC4dcV60I42vKdUC0fYTuE2QPunVUpf5XUTCkJ6fYGjMos2AA==",
"dependencies": { "dependencies": {
"Microsoft.Data.SqlClient": "5.0.1", "Microsoft.Data.SqlClient": "5.1.1",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5" "Microsoft.EntityFrameworkCore.Relational": "7.0.14"
} }
}, },
"Microsoft.Extensions.ApiDescription.Server": { "Microsoft.Extensions.ApiDescription.Server": {
@ -962,50 +936,52 @@
}, },
"Microsoft.IdentityModel.Abstractions": { "Microsoft.IdentityModel.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.22.0", "resolved": "6.24.0",
"contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==" "contentHash": "X6aBK56Ot15qKyG7X37KsPnrwah+Ka55NJWPppWVTDi8xWq7CJgeNw2XyaeHgE1o/mW4THwoabZkBbeG2TPBiw=="
}, },
"Microsoft.IdentityModel.JsonWebTokens": { "Microsoft.IdentityModel.JsonWebTokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "d3h1/BaMeylKTkdP6XwRCxuOoDJZ44V9xaXr6gl5QxmpnZGdoK3bySo3OQN8ehRLJHShb94ElLUvoXyglQtgAw==", "contentHash": "XDWrkThcxfuWp79AvAtg5f+uRS1BxkIbJnsG/e8VPzOWkYYuDg33emLjp5EWcwXYYIDsHnVZD/00kM/PYFQc/g==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Json": "4.7.2"
} }
}, },
"Microsoft.IdentityModel.Logging": { "Microsoft.IdentityModel.Logging": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "tuEhHIQwvBEhMf8I50hy8FHmRSUkffDFP5EdLsSDV4qRcl2wvOPkQxYqEzWkh+ytW6sbdJGEXElGhmhDfAxAKg==", "contentHash": "qLYWDOowM/zghmYKXw1yfYKlHOdS41i8t4hVXr9bSI90zHqhyhQh9GwVy8pENzs5wHeytU23DymluC9NtgYv7w==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Abstractions": "6.21.0" "Microsoft.IdentityModel.Abstractions": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols": { "Microsoft.IdentityModel.Protocols": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "0FqY5cTLQKtHrClzHEI+QxJl8OBT2vUiEQQB7UKk832JDiJJmetzYZ3AdSrPjN/3l3nkhByeWzXnhrX0JbifKg==", "contentHash": "+NzKCkvsQ8X1r/Ff74V7CFr9OsdMRaB6DsV+qpH7NNLdYJ8O4qHbmTnNEsjFcDmk/gVNDwhoL2gN5pkPVq0lwQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols.OpenIdConnect": { "Microsoft.IdentityModel.Protocols.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "vtSKL7n6EnAsLyxmiviusm6LKrblT2ndnNqN6rvVq6iIHAnPCK9E2DkDx6h1Jrpy1cvbp40r0cnTg23nhEAGTA==", "contentHash": "a/2RRrc8C9qaw8qdD9hv1ES9YKFgxaqr/SnwMSLbwQZJSUQDd4qx1K4EYgWaQWs73R+VXLyKSxN0f/uE9CsBiQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols": "6.21.0", "Microsoft.IdentityModel.Protocols": "6.24.0",
"System.IdentityModel.Tokens.Jwt": "6.21.0" "System.IdentityModel.Tokens.Jwt": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Tokens": { "Microsoft.IdentityModel.Tokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "AAEHZvZyb597a+QJSmtxH3n2P1nIJGpZ4Q89GTenknRx6T6zyfzf592yW/jA5e8EHN4tNMjjXHQaYWEq5+L05w==", "contentHash": "ZPqHi86UYuqJXJ7bLnlEctHKkPKT4lGUFbotoCNiXNCSL02emYlcxzGYsRGWWmbFEcYDMi2dcTLLYNzHqWOTsw==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.5.0", "Microsoft.CSharp": "4.5.0",
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"System.Security.Cryptography.Cng": "4.5.0" "System.Security.Cryptography.Cng": "4.5.0"
} }
}, },
@ -1141,13 +1117,13 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"Npgsql": { "Npgsql": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.6",
"contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", "contentHash": "TAqvwRnm3NJ0QvN7cvu6geJkbI0XPzGVRElVY5hF4gsgA+BnE12x6GM1TLhdeq+7ZKvvo3BD8jXKnXmr3tvdEw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "6.0.0", "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0" "System.Runtime.CompilerServices.Unsafe": "6.0.0"
@ -1155,13 +1131,13 @@
}, },
"Npgsql.EntityFrameworkCore.PostgreSQL": { "Npgsql.EntityFrameworkCore.PostgreSQL": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.11",
"contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", "contentHash": "cHEgEz0ldXc9wVANs8sJqC+3eilqefrkasCBgaVT0tyj8tb1p3/pwy2ngjboNkDG3M0z+xJsJ4jC5p8wySAM3w==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Relational": "[7.0.11, 8.0.0)",
"Npgsql": "7.0.4" "Npgsql": "7.0.6"
} }
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
@ -1484,8 +1460,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -1652,8 +1628,8 @@
}, },
"System.Configuration.ConfigurationManager": { "System.Configuration.ConfigurationManager": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.0.1",
"contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==",
"dependencies": { "dependencies": {
"System.Security.Cryptography.ProtectedData": "6.0.0", "System.Security.Cryptography.ProtectedData": "6.0.0",
"System.Security.Permissions": "6.0.0" "System.Security.Permissions": "6.0.0"
@ -1812,11 +1788,11 @@
}, },
"System.IdentityModel.Tokens.Jwt": { "System.IdentityModel.Tokens.Jwt": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "JRD8AuypBE+2zYxT3dMJomQVsPYsCqlyZhWel3J1d5nzQokSRyTueF+Q4ID3Jcu6zSZKuzOdJ1MLTkbQsDqcvQ==", "contentHash": "Qibsj9MPWq8S/C0FgvmsLfIlHLE7ay0MJIaAmK94ivN3VyDdglqReed5qMvdQhSL0BzK6v0Z1wB/sD88zVu6Jw==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"System.IO": { "System.IO": {
@ -2261,10 +2237,10 @@
}, },
"System.Runtime.Caching": { "System.Runtime.Caching": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "6.0.0",
"contentHash": "30D6MkO8WF9jVGWZIP0hmCN8l9BTY4LCsAzLIe4xFSXzs+AjDotR7DpSmj27pFskDURzUvqYYY0ikModgBTxWw==", "contentHash": "E0e03kUp5X2k+UAoVl6efmI7uU7JRBWi5EIdlQ7cr0NpBGjHG4fWII35PgsBY9T4fJQ8E4QPsL0rKksU9gcL5A==",
"dependencies": { "dependencies": {
"System.Configuration.ConfigurationManager": "5.0.0" "System.Configuration.ConfigurationManager": "6.0.0"
} }
}, },
"System.Runtime.CompilerServices.Unsafe": { "System.Runtime.CompilerServices.Unsafe": {
@ -2787,15 +2763,15 @@
"commercial.core": { "commercial.core": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )" "Core": "[2023.12.0, )"
} }
}, },
"commercial.infrastructure.entityframework": { "commercial.infrastructure.entityframework": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
}, },
"core": { "core": {
@ -2813,11 +2789,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2827,7 +2802,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2836,7 +2811,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }
@ -2844,29 +2819,29 @@
"infrastructure.dapper": { "infrastructure.dapper": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Dapper": "[2.0.123, )" "Dapper": "[2.1.24, )"
} }
}, },
"infrastructure.entityframework": { "infrastructure.entityframework": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Relational": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )", "Microsoft.EntityFrameworkCore.SqlServer": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Sqlite": "[7.0.14, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.11, )",
"Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )", "Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )",
"linq2db.EntityFrameworkCore": "[7.5.0, )" "linq2db.EntityFrameworkCore": "[7.6.0, )"
} }
}, },
"sharedweb": { "sharedweb": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.Dapper": "[2023.10.2, )", "Infrastructure.Dapper": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
} }
} }

View File

@ -1,7 +1,7 @@
using Bit.Billing.Constants; using Bit.Billing.Constants;
using Bit.Billing.Services; using Bit.Billing.Services;
using Bit.Core.AdminConsole.Entities;
using Bit.Core.Context; using Bit.Core.Context;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.OrganizationFeatures.OrganizationSponsorships.FamiliesForEnterprise.Interfaces; using Bit.Core.OrganizationFeatures.OrganizationSponsorships.FamiliesForEnterprise.Interfaces;
using Bit.Core.Repositories; using Bit.Core.Repositories;
@ -264,9 +264,16 @@ public class StripeController : Controller
await SendEmails(new List<string> { organization.BillingEmail }); await SendEmails(new List<string> { organization.BillingEmail });
var ownerEmails = await _organizationRepository.GetOwnerEmailAddressesById(organization.Id); /*
* TODO: https://bitwarden.atlassian.net/browse/PM-4862
* Disabling this as part of a hot fix. It needs to check whether the organization
* belongs to a Reseller provider and only send an email to the organization owners if it does.
* It also requires a new email template as the current one contains too much billing information.
*/
await SendEmails(ownerEmails); // var ownerEmails = await _organizationRepository.GetOwnerEmailAddressesById(organization.Id);
// await SendEmails(ownerEmails);
} }
else if (userId.HasValue) else if (userId.HasValue)
{ {

View File

@ -173,8 +173,8 @@
}, },
"Dapper": { "Dapper": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.123", "resolved": "2.1.24",
"contentHash": "RDFF4rBLLmbpi6pwkY7q/M6UXHRJEOerplDGE5jwEkP/JGJnBauAClYavNKJPW1yOTWRPIyfj4is3EaJxQXILQ==" "contentHash": "/2t2vsdJyZRsk13AsWigZpsuFvEwK+o3v862cEULXoww905gyKhJFSuwmZI/4Ui9COX9ZCFCI09UHyH4wVYl3A=="
}, },
"DnsClient": { "DnsClient": {
"type": "Transitive", "type": "Transitive",
@ -184,6 +184,24 @@
"Microsoft.Win32.Registry": "5.0.0" "Microsoft.Win32.Registry": "5.0.0"
} }
}, },
"Duende.IdentityServer": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "4HVjzx1F8v5J+U7oa8RGAQGj2QzmzNSu87r18Sh+dlh10uyZZL8teAaT/FaVLDObnfItGdPFvN8mwpF/HkI3Xw==",
"dependencies": {
"Duende.IdentityServer.Storage": "6.0.4",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "6.0.0"
}
},
"Duende.IdentityServer.Storage": {
"type": "Transitive",
"resolved": "6.0.4",
"contentHash": "s5gAjfbpr2IMgI+fU2Nx+2AZdzstmbt9gpo13iX7GwvqSeSaBVqj9ZskAN0R2KF1OemPdZuGnfaTcevdXMUrrw==",
"dependencies": {
"IdentityModel": "6.0.0",
"Microsoft.AspNetCore.DataProtection.Abstractions": "6.0.0"
}
},
"Fido2": { "Fido2": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.0.1", "resolved": "3.0.1",
@ -212,57 +230,16 @@
}, },
"Handlebars.Net": { "Handlebars.Net": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.1.2", "resolved": "2.1.4",
"contentHash": "p60QyeBYpZmcZdIXRMqs9XySIBaxJ0lj3+QD0EJVr4ybTigOTCumXMMin5dPwjo9At1UwkDZ3gGwa1lmGjG6DA==", "contentHash": "Od7MWDfGxYKRtxETFMlcvCrY8hAqyuXZDX4EsOfiI/jzh+PVBuVxazHBC1HmVqTKX1JnRtoxIMcH95K9UFlYog==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.7.0" "Microsoft.CSharp": "4.7.0"
} }
}, },
"IdentityModel": { "IdentityModel": {
"type": "Transitive", "type": "Transitive",
"resolved": "4.4.0", "resolved": "6.0.0",
"contentHash": "b18wrIx5wnZlMxAX7oVsE+nDtAJ4hajYlH0xPlaRvo4r/fz08K6pPeZvbiqS9nfNbzfIgLFmNX+FL9qR9ZR5PA==", "contentHash": "eVHCR7a6m/dm5RFcBzE3qs/Jg5j9R5Rjpu8aTOv9e4AFvaQtBXb5ah7kmwU+YwA0ufRwz4wf1hnIvsD2hSnI4g=="
"dependencies": {
"Newtonsoft.Json": "11.0.2",
"System.Text.Encodings.Web": "4.7.0"
}
},
"IdentityModel.AspNetCore.OAuth2Introspection": {
"type": "Transitive",
"resolved": "4.0.1",
"contentHash": "ZNdMZMaj9fqR3j50vYsu+1U3QGd6n8+fqwf+a8mCTcmXGor+HgFDfdq0mM34bsmD6uEgAQup7sv2ZW5kR36dbA==",
"dependencies": {
"IdentityModel": "4.0.0"
}
},
"IdentityServer4": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "blaxxGuOA7v/w1q+fxn97wZ+x2ecG1ZD4mc/N/ZOXMNeFZZhqv+4LF26Gecyik3nWrJPmbMEtQbLmRsKG8k61w==",
"dependencies": {
"IdentityModel": "4.4.0",
"IdentityServer4.Storage": "4.1.2",
"Microsoft.AspNetCore.Authentication.OpenIdConnect": "3.1.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.6.0",
"Newtonsoft.Json": "12.0.2"
}
},
"IdentityServer4.AccessTokenValidation": {
"type": "Transitive",
"resolved": "3.0.1",
"contentHash": "qu/M6UyN4o9NVep7q545Ms7hYAnsQqSdLbN1Fjjrn4m35lyBfeQPSSNzDryAKHbodyWOQfHaOqKEyMEJQ5Rpgw==",
"dependencies": {
"IdentityModel.AspNetCore.OAuth2Introspection": "4.0.1",
"Microsoft.AspNetCore.Authentication.JwtBearer": "3.0.0"
}
},
"IdentityServer4.Storage": {
"type": "Transitive",
"resolved": "4.1.2",
"contentHash": "KoSffyZyyeCNTIyJiZnCuPakJ1QbCHlpty6gbWUj/7yl+w0PXIchgmmJnJSvddzBb8iZ2xew/vGlxWUIP17P2g==",
"dependencies": {
"IdentityModel": "4.4.0"
}
}, },
"LaunchDarkly.Cache": { "LaunchDarkly.Cache": {
"type": "Transitive", "type": "Transitive",
@ -271,26 +248,27 @@
}, },
"LaunchDarkly.CommonSdk": { "LaunchDarkly.CommonSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.2.0",
"contentHash": "YYYq+41gZRMQ8dIoMC6HOq/dI+4RY3HsexLLAaE9T1+1tVMeQkbCqak7sVeKX4QcE7xlXx23lWgipYUkRoRUyw==", "contentHash": "eLeb+tTNLwOxlUIsZWzJlcPmG9Wyf20NYyucP6MW6aqKW6doKFeSO+aJe0z+WyijbvfX1Dp1U1HQatOu6fa1Gg==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
}, },
"LaunchDarkly.EventSource": { "LaunchDarkly.EventSource": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "DN44Ry5M4lyrjiF7LEu0Ijco7Wm8R7mJopN+giYsYjkQlszsXdFvm3POoehIDAOtL1HHl5bZvF9k9xK034u3IA==", "contentHash": "PztDWiMvPWODx+kfBnCroZ8Lpya4nPc7ZO4TZysOogODbVXDDPDYrdcgVivCMgf4davhGrp61ekvZc+Uy1NYMA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Logging": "[1.0.1, 3.0.0)" "LaunchDarkly.Logging": "[2.0.0, 3.0.0)"
} }
}, },
"LaunchDarkly.InternalSdk": { "LaunchDarkly.InternalSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "3.3.0",
"contentHash": "jW8VEfFciuCcJUEuvSzmrbMVYYXwGL/ZWHUZLiA4aDOQ1LcEXp32uK405NQW/izEypUfWB+9TaSjPpFIC+5Wzw==", "contentHash": "TBvs/B6iyXp9MqRKjIoBZ/T0+/xgp5xg+MuHqr5U+N5+7DghtI2FnsmgeBedTIeQdA3Tk8Z4Bj4hlqU9FBiEnw==",
"dependencies": { "dependencies": {
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.Logging": "[2.0.0, 3.0.0)", "LaunchDarkly.Logging": "[2.0.0, 3.0.0)",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -305,13 +283,13 @@
}, },
"LaunchDarkly.ServerSdk": { "LaunchDarkly.ServerSdk": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.0", "resolved": "8.0.0",
"contentHash": "gkTWb+f5QlsXIqFAciBef3qKZU2y0Hy3Fpt4pvZoxNcnBKg2PNTDSnbpbYEKPeQ1yk1avNaI/tKprnahfrmJFg==", "contentHash": "vosFEXYJABuIDIA0+6sncalTmrKXEkBKeqzuP9/vvcCVlFSXUl/ZnrkrAVg3ViDWDi7kjpJSk2W3h5D0TUfCGA==",
"dependencies": { "dependencies": {
"LaunchDarkly.Cache": "1.0.2", "LaunchDarkly.Cache": "1.0.2",
"LaunchDarkly.CommonSdk": "6.0.0", "LaunchDarkly.CommonSdk": "6.2.0",
"LaunchDarkly.EventSource": "5.0.1", "LaunchDarkly.EventSource": "5.1.0",
"LaunchDarkly.InternalSdk": "3.1.0", "LaunchDarkly.InternalSdk": "3.3.0",
"LaunchDarkly.Logging": "2.0.0", "LaunchDarkly.Logging": "2.0.0",
"System.Collections.Immutable": "1.7.1" "System.Collections.Immutable": "1.7.1"
} }
@ -323,16 +301,16 @@
}, },
"linq2db": { "linq2db": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.2.1", "resolved": "5.3.1",
"contentHash": "OOBM8s39zhbZAgqFnl2KGxT5RqBDw21X69U528qV2PgQispaA3f+or0ILrLEgnNIJuB4EBgaw8gC6ttSHn4X0Q==" "contentHash": "707mIbEmtptvKeUW940UwoNwq05I7OUu0VWtclLtyYaASp+ugX4I/Er1UVpeldsDawqlVMXB5EQ5/Oar6AkUGQ=="
}, },
"linq2db.EntityFrameworkCore": { "linq2db.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.5.0", "resolved": "7.6.0",
"contentHash": "ePHzO99xbObgMLlAFh08of1SnVhg6j4Su9327DrIB7RZWCgtQIX6k+nbl+HRVOooAndZSs7b+DduSgdnJjaJGw==", "contentHash": "T1W9o8wVzApsUwu7SRg/L7487kaiLQYt2AqRVnXVGfobD+ZKy2oRsUMws0PICtciaz4qbfLp/r/+NksfuYsFlw==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Relational": "7.0.0", "Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"linq2db": "5.2.1" "linq2db": "5.3.1"
} }
}, },
"MailKit": { "MailKit": {
@ -353,10 +331,10 @@
}, },
"Microsoft.AspNetCore.Authentication.OpenIdConnect": { "Microsoft.AspNetCore.Authentication.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.0", "resolved": "6.0.0",
"contentHash": "O1cAQYUTU8EfRqwc5/rfTns4E4hKlFlg59fuKRrST+PzsxI6H07KqRN/JjdYhAuVYxF8jPnIGbj+zuc5paOWUw==", "contentHash": "cJxdro36spFzk/K2OFCddM6vZ+yoj6ug8mTFRH3Gdv1Pul/buSuCtfb/FSCp31UmS5S4C1315dU7wX3ErLFuDg==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "5.5.0" "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.10.0"
} }
}, },
"Microsoft.AspNetCore.Cryptography.Internal": { "Microsoft.AspNetCore.Cryptography.Internal": {
@ -389,8 +367,8 @@
}, },
"Microsoft.AspNetCore.DataProtection.Abstractions": { "Microsoft.AspNetCore.DataProtection.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "3.1.32", "resolved": "6.0.0",
"contentHash": "MPL4iVyiaRxnOUY5VATHjvhDWaAEFb77KFiUxVRklv3Z3v+STofUr1UG/aCt1O9cgN7FVTDaC5A7U+zsLub8Xg==" "contentHash": "Z/UU4NEBm5UgNufJmw+j5baW26ytCOIZ0G7sZocPaOzsUeBon1bkM3lSMNZQG2GmDjAIVP2XMSODf2jzSGbibw=="
}, },
"Microsoft.Azure.Amqp": { "Microsoft.Azure.Amqp": {
"type": "Transitive", "type": "Transitive",
@ -475,48 +453,44 @@
}, },
"Microsoft.Data.SqlClient": { "Microsoft.Data.SqlClient": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.1",
"contentHash": "uu8dfrsx081cSbEevWuZAvqdmANDGJkbLBL2G3j0LAZxX1Oy8RCVAaC4Lcuak6jNicWP6CWvHqBTIEmQNSxQlw==", "contentHash": "MW5E9HFvCaV069o8b6YpuRDPBux8s96qDnOJ+4N9QNUCs7c5W3KxwQ+ftpAjbMUlImL+c9WR+l+f5hzjkqhu2g==",
"dependencies": { "dependencies": {
"Azure.Identity": "1.6.0", "Azure.Identity": "1.7.0",
"Microsoft.Data.SqlClient.SNI.runtime": "5.0.1", "Microsoft.Data.SqlClient.SNI.runtime": "5.1.0",
"Microsoft.Identity.Client": "4.45.0", "Microsoft.Identity.Client": "4.47.2",
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.21.0", "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.24.0",
"Microsoft.SqlServer.Server": "1.0.0", "Microsoft.SqlServer.Server": "1.0.0",
"Microsoft.Win32.Registry": "5.0.0", "System.Configuration.ConfigurationManager": "6.0.1",
"System.Buffers": "4.5.1", "System.Diagnostics.DiagnosticSource": "6.0.0",
"System.Configuration.ConfigurationManager": "5.0.0", "System.Runtime.Caching": "6.0.0",
"System.Diagnostics.DiagnosticSource": "5.0.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime.Caching": "5.0.0",
"System.Security.Cryptography.Cng": "5.0.0", "System.Security.Cryptography.Cng": "5.0.0",
"System.Security.Principal.Windows": "5.0.0", "System.Security.Principal.Windows": "5.0.0",
"System.Text.Encoding.CodePages": "5.0.0", "System.Text.Encoding.CodePages": "6.0.0",
"System.Text.Encodings.Web": "4.7.2" "System.Text.Encodings.Web": "6.0.0"
} }
}, },
"Microsoft.Data.SqlClient.SNI.runtime": { "Microsoft.Data.SqlClient.SNI.runtime": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.1", "resolved": "5.1.0",
"contentHash": "y0X5MxiNdbITJYoafJ2ruaX6hqO0twpCGR/ipiDOe85JKLU8WL4TuAQfDe5qtt3bND5Je26HnrarLSAMMnVTNg==" "contentHash": "jVsElisM5sfBzaaV9kdq2NXZLwIbytetnsOIlJ0cQGgQP4zFNBmkfHBnpwtmKrtBJBEV9+9PVQPVrcCVhDgcIg=="
}, },
"Microsoft.Data.Sqlite.Core": { "Microsoft.Data.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", "contentHash": "qvYae3/v9Fvqsjp/7OKQBuJK+Uc3m/WctfpIUMmGMDot2Bd8UWBKiMSlh26UtfQa9x4N+k7NxCT+AbZVoNrCdg==",
"dependencies": { "dependencies": {
"SQLitePCLRaw.core": "2.1.4" "SQLitePCLRaw.core": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore": { "Microsoft.EntityFrameworkCore": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "contentHash": "0KYkAemPygW6yzifciFlmMzkO4sI4Dw69xLgwg3ui5rXJS5XvzuAWVvfdrKJciqeCbCnVS/ZbOWpcwWgqce5bQ==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.5", "Microsoft.EntityFrameworkCore.Abstractions": "7.0.14",
"Microsoft.EntityFrameworkCore.Analyzers": "7.0.5", "Microsoft.EntityFrameworkCore.Analyzers": "7.0.14",
"Microsoft.Extensions.Caching.Memory": "7.0.0", "Microsoft.Extensions.Caching.Memory": "7.0.0",
"Microsoft.Extensions.DependencyInjection": "7.0.0", "Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.Logging": "7.0.0" "Microsoft.Extensions.Logging": "7.0.0"
@ -524,49 +498,49 @@
}, },
"Microsoft.EntityFrameworkCore.Abstractions": { "Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "iwQso+hFRsEWjhH2WsEQj1D2QE5BlEXiXEt6A3SlYTPRPdZsyTNDeDDEdtxL+H/UJPQgQYY+9SMMRcEiXBmCAA==" "contentHash": "aEcXDSYpDdD5wdIRKTqcS44f3W4capqQ1BWVRPJgacATfHkO62RX9Nnh0hUFg+rei9OLuJp0Y4zsy1fNeOXv5g=="
}, },
"Microsoft.EntityFrameworkCore.Analyzers": { "Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "yMLM/aK1MikVqpjxd7PJ1Pjgztd3VAd26ZHxyjxG3RPeM9cHjvS5tCg9kAAayR6eHmBg0ffZsHdT28WfA5tTlA==" "contentHash": "esI4RF6mix4DDFBhWB9k1vJxAL8GouSf5ZV8oFJoVsIQ9d2J3MPgC1VL2qM9Vw5cH7Vg7TzRyKNpCRXFVkWs9w=="
}, },
"Microsoft.EntityFrameworkCore.Relational": { "Microsoft.EntityFrameworkCore.Relational": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "u/33DC4S6g2hpMPgBc5Kdnlz//nqHR5c/ovgjtiP/wQ7sOd0EOdygVzUJAAOxCwbtAHDsJXS9Vc3jLFYq0yu8Q==", "contentHash": "MrVBnWOFYwfLMGQfrcIuqEM9Xvokv1vJeYxqNH3K3xOtAdHwHQTrKnpDP97tU+LBlvcnyXAtAtryYcpLXWtRNA==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.5", "Microsoft.EntityFrameworkCore": "7.0.14",
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0" "Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite": { "Microsoft.EntityFrameworkCore.Sqlite": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "2XPZB9OLF5/m13HgZp7/Dv0u8FWEJzcaBsMYR9Kp3R6aygkb3RnOijofPDTsmdhAqG9YTysCmh2bFaGs0TCc7A==", "contentHash": "8c8Hw2tmfy5YEsi9RL2/u2Qi9IwVbmj/yDlJy4iJPadeE3/AssLrgtobOBz4ftg2y5PVjFL59Gq7YzGLQH5q1A==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.5", "Microsoft.EntityFrameworkCore.Sqlite.Core": "7.0.14",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
} }
}, },
"Microsoft.EntityFrameworkCore.Sqlite.Core": { "Microsoft.EntityFrameworkCore.Sqlite.Core": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "4C+9ct6A/Bq61Ta9Uh2td4/XwNpRCiPI03SWTa3hPJjA/g8wCw2hetbh3DDe5HcydzgDq/lRRjU/eRy3UODklQ==", "contentHash": "JNUkZVff1V/A/P3JiBbgt+Y2oCQSuzORxE3jOqFDbFjSFu7jHDEetJ/afSF/taa0lbyN9OpvaKjsbKk3Iis29Q==",
"dependencies": { "dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5", "Microsoft.Data.Sqlite.Core": "7.0.14",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5", "Microsoft.EntityFrameworkCore.Relational": "7.0.14",
"Microsoft.Extensions.DependencyModel": "7.0.0" "Microsoft.Extensions.DependencyModel": "7.0.0"
} }
}, },
"Microsoft.EntityFrameworkCore.SqlServer": { "Microsoft.EntityFrameworkCore.SqlServer": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.5", "resolved": "7.0.14",
"contentHash": "cUJqCiamT0EvpKNgZEV5fqNv2MyVfKNgOPQfFINqHiIKHOYrS0nTCUJP97+UuG0JIIrP792/PwnuNjbekImtBg==", "contentHash": "d9hqEw4W/TdQ1WDm03uyFuDoehL6GNq/NMChFaC4dcV60I42vKdUC0fYTuE2QPunVUpf5XUTCkJ6fYGjMos2AA==",
"dependencies": { "dependencies": {
"Microsoft.Data.SqlClient": "5.0.1", "Microsoft.Data.SqlClient": "5.1.1",
"Microsoft.EntityFrameworkCore.Relational": "7.0.5" "Microsoft.EntityFrameworkCore.Relational": "7.0.14"
} }
}, },
"Microsoft.Extensions.Caching.Abstractions": { "Microsoft.Extensions.Caching.Abstractions": {
@ -819,50 +793,52 @@
}, },
"Microsoft.IdentityModel.Abstractions": { "Microsoft.IdentityModel.Abstractions": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.22.0", "resolved": "6.24.0",
"contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ==" "contentHash": "X6aBK56Ot15qKyG7X37KsPnrwah+Ka55NJWPppWVTDi8xWq7CJgeNw2XyaeHgE1o/mW4THwoabZkBbeG2TPBiw=="
}, },
"Microsoft.IdentityModel.JsonWebTokens": { "Microsoft.IdentityModel.JsonWebTokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "d3h1/BaMeylKTkdP6XwRCxuOoDJZ44V9xaXr6gl5QxmpnZGdoK3bySo3OQN8ehRLJHShb94ElLUvoXyglQtgAw==", "contentHash": "XDWrkThcxfuWp79AvAtg5f+uRS1BxkIbJnsG/e8VPzOWkYYuDg33emLjp5EWcwXYYIDsHnVZD/00kM/PYFQc/g==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Json": "4.7.2"
} }
}, },
"Microsoft.IdentityModel.Logging": { "Microsoft.IdentityModel.Logging": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "tuEhHIQwvBEhMf8I50hy8FHmRSUkffDFP5EdLsSDV4qRcl2wvOPkQxYqEzWkh+ytW6sbdJGEXElGhmhDfAxAKg==", "contentHash": "qLYWDOowM/zghmYKXw1yfYKlHOdS41i8t4hVXr9bSI90zHqhyhQh9GwVy8pENzs5wHeytU23DymluC9NtgYv7w==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Abstractions": "6.21.0" "Microsoft.IdentityModel.Abstractions": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols": { "Microsoft.IdentityModel.Protocols": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "0FqY5cTLQKtHrClzHEI+QxJl8OBT2vUiEQQB7UKk832JDiJJmetzYZ3AdSrPjN/3l3nkhByeWzXnhrX0JbifKg==", "contentHash": "+NzKCkvsQ8X1r/Ff74V7CFr9OsdMRaB6DsV+qpH7NNLdYJ8O4qHbmTnNEsjFcDmk/gVNDwhoL2gN5pkPVq0lwQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Protocols.OpenIdConnect": { "Microsoft.IdentityModel.Protocols.OpenIdConnect": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "vtSKL7n6EnAsLyxmiviusm6LKrblT2ndnNqN6rvVq6iIHAnPCK9E2DkDx6h1Jrpy1cvbp40r0cnTg23nhEAGTA==", "contentHash": "a/2RRrc8C9qaw8qdD9hv1ES9YKFgxaqr/SnwMSLbwQZJSUQDd4qx1K4EYgWaQWs73R+VXLyKSxN0f/uE9CsBiQ==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.Protocols": "6.21.0", "Microsoft.IdentityModel.Protocols": "6.24.0",
"System.IdentityModel.Tokens.Jwt": "6.21.0" "System.IdentityModel.Tokens.Jwt": "6.24.0"
} }
}, },
"Microsoft.IdentityModel.Tokens": { "Microsoft.IdentityModel.Tokens": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "AAEHZvZyb597a+QJSmtxH3n2P1nIJGpZ4Q89GTenknRx6T6zyfzf592yW/jA5e8EHN4tNMjjXHQaYWEq5+L05w==", "contentHash": "ZPqHi86UYuqJXJ7bLnlEctHKkPKT4lGUFbotoCNiXNCSL02emYlcxzGYsRGWWmbFEcYDMi2dcTLLYNzHqWOTsw==",
"dependencies": { "dependencies": {
"Microsoft.CSharp": "4.5.0", "Microsoft.CSharp": "4.5.0",
"Microsoft.IdentityModel.Logging": "6.21.0", "Microsoft.IdentityModel.Logging": "6.24.0",
"System.Security.Cryptography.Cng": "4.5.0" "System.Security.Cryptography.Cng": "4.5.0"
} }
}, },
@ -993,13 +969,13 @@
}, },
"Newtonsoft.Json": { "Newtonsoft.Json": {
"type": "Transitive", "type": "Transitive",
"resolved": "13.0.1", "resolved": "13.0.3",
"contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
}, },
"Npgsql": { "Npgsql": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.6",
"contentHash": "7UVPYy2RP0ci04PED1tc9ZCaTw/DfSdSkLiGEFCAvwMwsgA/bAluj1liNzP1IpN0MFofnOF0cm1zJfmbEuCehg==", "contentHash": "TAqvwRnm3NJ0QvN7cvu6geJkbI0XPzGVRElVY5hF4gsgA+BnE12x6GM1TLhdeq+7ZKvvo3BD8jXKnXmr3tvdEw==",
"dependencies": { "dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "6.0.0", "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0" "System.Runtime.CompilerServices.Unsafe": "6.0.0"
@ -1007,13 +983,13 @@
}, },
"Npgsql.EntityFrameworkCore.PostgreSQL": { "Npgsql.EntityFrameworkCore.PostgreSQL": {
"type": "Transitive", "type": "Transitive",
"resolved": "7.0.4", "resolved": "7.0.11",
"contentHash": "ZYMtyG6pmLtUsFAx0/XaIlVkJM+1gArWEKD55cLLxiVlGScAphjiGj+G7Gk16yg5lhhdWx+bgXWpIUISXuS33g==", "contentHash": "cHEgEz0ldXc9wVANs8sJqC+3eilqefrkasCBgaVT0tyj8tb1p3/pwy2ngjboNkDG3M0z+xJsJ4jC5p8wySAM3w==",
"dependencies": { "dependencies": {
"Microsoft.EntityFrameworkCore": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Abstractions": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Abstractions": "[7.0.11, 8.0.0)",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, 8.0.0)", "Microsoft.EntityFrameworkCore.Relational": "[7.0.11, 8.0.0)",
"Npgsql": "7.0.4" "Npgsql": "7.0.6"
} }
}, },
"NSec.Cryptography": { "NSec.Cryptography": {
@ -1336,8 +1312,8 @@
}, },
"Serilog.Sinks.SyslogMessages": { "Serilog.Sinks.SyslogMessages": {
"type": "Transitive", "type": "Transitive",
"resolved": "2.0.6", "resolved": "2.0.9",
"contentHash": "V2Yq2GEbk7taEPbpBLFzLXhrHrUzKf4sQu/zLrANU8XIoUn/Mr08M2E8PrcrWVXCj0R4xLMWYe0Z1sxOrMF3IA==", "contentHash": "y7J+/h/Nf5EAtbpa6lC1nDhK/F9kC5oxuVYmQivv242Oh4hAVMeoAk5Gv6bgb/KbmqufGPXUFkX/AlcrvZ8Ywg==",
"dependencies": { "dependencies": {
"Serilog": "2.5.0", "Serilog": "2.5.0",
"Serilog.Sinks.PeriodicBatching": "2.3.0" "Serilog.Sinks.PeriodicBatching": "2.3.0"
@ -1470,8 +1446,8 @@
}, },
"System.Configuration.ConfigurationManager": { "System.Configuration.ConfigurationManager": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.0.0", "resolved": "6.0.1",
"contentHash": "7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==", "contentHash": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==",
"dependencies": { "dependencies": {
"System.Security.Cryptography.ProtectedData": "6.0.0", "System.Security.Cryptography.ProtectedData": "6.0.0",
"System.Security.Permissions": "6.0.0" "System.Security.Permissions": "6.0.0"
@ -1630,11 +1606,11 @@
}, },
"System.IdentityModel.Tokens.Jwt": { "System.IdentityModel.Tokens.Jwt": {
"type": "Transitive", "type": "Transitive",
"resolved": "6.21.0", "resolved": "6.24.0",
"contentHash": "JRD8AuypBE+2zYxT3dMJomQVsPYsCqlyZhWel3J1d5nzQokSRyTueF+Q4ID3Jcu6zSZKuzOdJ1MLTkbQsDqcvQ==", "contentHash": "Qibsj9MPWq8S/C0FgvmsLfIlHLE7ay0MJIaAmK94ivN3VyDdglqReed5qMvdQhSL0BzK6v0Z1wB/sD88zVu6Jw==",
"dependencies": { "dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "6.21.0", "Microsoft.IdentityModel.JsonWebTokens": "6.24.0",
"Microsoft.IdentityModel.Tokens": "6.21.0" "Microsoft.IdentityModel.Tokens": "6.24.0"
} }
}, },
"System.IO": { "System.IO": {
@ -2083,10 +2059,10 @@
}, },
"System.Runtime.Caching": { "System.Runtime.Caching": {
"type": "Transitive", "type": "Transitive",
"resolved": "5.0.0", "resolved": "6.0.0",
"contentHash": "30D6MkO8WF9jVGWZIP0hmCN8l9BTY4LCsAzLIe4xFSXzs+AjDotR7DpSmj27pFskDURzUvqYYY0ikModgBTxWw==", "contentHash": "E0e03kUp5X2k+UAoVl6efmI7uU7JRBWi5EIdlQ7cr0NpBGjHG4fWII35PgsBY9T4fJQ8E4QPsL0rKksU9gcL5A==",
"dependencies": { "dependencies": {
"System.Configuration.ConfigurationManager": "5.0.0" "System.Configuration.ConfigurationManager": "6.0.0"
} }
}, },
"System.Runtime.CompilerServices.Unsafe": { "System.Runtime.CompilerServices.Unsafe": {
@ -2616,11 +2592,10 @@
"BitPay.Light": "[1.0.1907, )", "BitPay.Light": "[1.0.1907, )",
"Braintree": "[5.19.0, )", "Braintree": "[5.19.0, )",
"DnsClient": "[1.7.0, )", "DnsClient": "[1.7.0, )",
"Duende.IdentityServer": "[6.0.4, )",
"Fido2.AspNet": "[3.0.1, )", "Fido2.AspNet": "[3.0.1, )",
"Handlebars.Net": "[2.1.2, )", "Handlebars.Net": "[2.1.4, )",
"IdentityServer4": "[4.1.2, )", "LaunchDarkly.ServerSdk": "[8.0.0, )",
"IdentityServer4.AccessTokenValidation": "[3.0.1, )",
"LaunchDarkly.ServerSdk": "[7.0.0, )",
"MailKit": "[4.2.0, )", "MailKit": "[4.2.0, )",
"Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )", "Microsoft.AspNetCore.Authentication.JwtBearer": "[6.0.4, )",
"Microsoft.Azure.Cosmos.Table": "[1.0.8, )", "Microsoft.Azure.Cosmos.Table": "[1.0.8, )",
@ -2630,7 +2605,7 @@
"Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )", "Microsoft.Extensions.Configuration.EnvironmentVariables": "[6.0.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )", "Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.Identity.Stores": "[6.0.4, )", "Microsoft.Extensions.Identity.Stores": "[6.0.4, )",
"Newtonsoft.Json": "[13.0.1, )", "Newtonsoft.Json": "[13.0.3, )",
"Otp.NET": "[1.2.2, )", "Otp.NET": "[1.2.2, )",
"Quartz": "[3.4.0, )", "Quartz": "[3.4.0, )",
"SendGrid": "[9.27.0, )", "SendGrid": "[9.27.0, )",
@ -2639,7 +2614,7 @@
"Serilog.Extensions.Logging": "[3.1.0, )", "Serilog.Extensions.Logging": "[3.1.0, )",
"Serilog.Extensions.Logging.File": "[2.0.0, )", "Serilog.Extensions.Logging.File": "[2.0.0, )",
"Serilog.Sinks.AzureCosmosDB": "[2.0.0, )", "Serilog.Sinks.AzureCosmosDB": "[2.0.0, )",
"Serilog.Sinks.SyslogMessages": "[2.0.6, )", "Serilog.Sinks.SyslogMessages": "[2.0.9, )",
"Stripe.net": "[40.0.0, )", "Stripe.net": "[40.0.0, )",
"YubicoDotNetClient": "[1.2.0, )" "YubicoDotNetClient": "[1.2.0, )"
} }
@ -2647,29 +2622,29 @@
"infrastructure.dapper": { "infrastructure.dapper": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Dapper": "[2.0.123, )" "Dapper": "[2.1.24, )"
} }
}, },
"infrastructure.entityframework": { "infrastructure.entityframework": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )", "AutoMapper.Extensions.Microsoft.DependencyInjection": "[12.0.1, )",
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Microsoft.EntityFrameworkCore.Relational": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Relational": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.SqlServer": "[7.0.5, )", "Microsoft.EntityFrameworkCore.SqlServer": "[7.0.14, )",
"Microsoft.EntityFrameworkCore.Sqlite": "[7.0.5, )", "Microsoft.EntityFrameworkCore.Sqlite": "[7.0.14, )",
"Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.4, )", "Npgsql.EntityFrameworkCore.PostgreSQL": "[7.0.11, )",
"Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )", "Pomelo.EntityFrameworkCore.MySql": "[7.0.0, )",
"linq2db.EntityFrameworkCore": "[7.5.0, )" "linq2db.EntityFrameworkCore": "[7.6.0, )"
} }
}, },
"sharedweb": { "sharedweb": {
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"Core": "[2023.10.2, )", "Core": "[2023.12.0, )",
"Infrastructure.Dapper": "[2023.10.2, )", "Infrastructure.Dapper": "[2023.12.0, )",
"Infrastructure.EntityFramework": "[2023.10.2, )" "Infrastructure.EntityFramework": "[2023.12.0, )"
} }
} }
} }

View File

@ -16,6 +16,7 @@ public class CurrentContextOrganization
Permissions = CoreHelpers.LoadClassFromJsonData<Permissions>(orgUser.Permissions); Permissions = CoreHelpers.LoadClassFromJsonData<Permissions>(orgUser.Permissions);
AccessSecretsManager = orgUser.AccessSecretsManager && orgUser.UseSecretsManager && orgUser.Enabled; AccessSecretsManager = orgUser.AccessSecretsManager && orgUser.UseSecretsManager && orgUser.Enabled;
LimitCollectionCreationDeletion = orgUser.LimitCollectionCreationDeletion; LimitCollectionCreationDeletion = orgUser.LimitCollectionCreationDeletion;
AllowAdminAccessToAllCollectionItems = orgUser.AllowAdminAccessToAllCollectionItems;
} }
public Guid Id { get; set; } public Guid Id { get; set; }
@ -23,4 +24,5 @@ public class CurrentContextOrganization
public Permissions Permissions { get; set; } = new(); public Permissions Permissions { get; set; } = new();
public bool AccessSecretsManager { get; set; } public bool AccessSecretsManager { get; set; }
public bool LimitCollectionCreationDeletion { get; set; } public bool LimitCollectionCreationDeletion { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }
} }

View File

@ -2,12 +2,13 @@
using System.Text.Json; using System.Text.Json;
using Bit.Core.Auth.Enums; using Bit.Core.Auth.Enums;
using Bit.Core.Auth.Models; using Bit.Core.Auth.Models;
using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Models.Business; using Bit.Core.Models.Business;
using Bit.Core.Tools.Entities; using Bit.Core.Tools.Entities;
using Bit.Core.Utilities; using Bit.Core.Utilities;
namespace Bit.Core.Entities; namespace Bit.Core.AdminConsole.Entities;
public class Organization : ITableObject<Guid>, ISubscriber, IStorable, IStorableSubscriber, IRevisable, IReferenceable public class Organization : ITableObject<Guid>, ISubscriber, IStorable, IStorableSubscriber, IRevisable, IReferenceable
{ {
@ -82,6 +83,14 @@ public class Organization : ITableObject<Guid>, ISubscriber, IStorable, IStorabl
/// Refers to the ability for an organization to limit collection creation and deletion to owners and admins only /// Refers to the ability for an organization to limit collection creation and deletion to owners and admins only
/// </summary> /// </summary>
public bool LimitCollectionCreationDeletion { get; set; } public bool LimitCollectionCreationDeletion { get; set; }
/// <summary>
/// Refers to the ability for an organization to limit owner/admin access to all collection items
/// <remarks>
/// True: Owner/admins can access all items belonging to any collections
/// False: Owner/admins can only access items for collections they are assigned
/// </remarks>
/// </summary>
public bool AllowAdminAccessToAllCollectionItems { get; set; }
public void SetNewId() public void SetNewId()
{ {

View File

@ -1,8 +1,9 @@
using Bit.Core.Enums; using Bit.Core.AdminConsole.Enums;
using Bit.Core.Models.Data.Organizations.Policies; using Bit.Core.AdminConsole.Models.Data.Organizations.Policies;
using Bit.Core.Entities;
using Bit.Core.Utilities; using Bit.Core.Utilities;
namespace Bit.Core.Entities; namespace Bit.Core.AdminConsole.Entities;
public class Policy : ITableObject<Guid> public class Policy : ITableObject<Guid>
{ {

View File

@ -1,4 +1,4 @@
namespace Bit.Core.Enums; namespace Bit.Core.AdminConsole.Enums;
public enum PolicyType : byte public enum PolicyType : byte
{ {

View File

@ -1,8 +1,9 @@
using System.Text.Json; using System.Text.Json;
using Bit.Core.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Enums; using Bit.Core.AdminConsole.Enums;
using Bit.Core.Models.Api;
namespace Bit.Core.Models.Api.Response; namespace Bit.Core.AdminConsole.Models.Api.Response;
public class PolicyResponseModel : ResponseModel public class PolicyResponseModel : ResponseModel
{ {

Some files were not shown because too many files have changed in this diff Show More