Skip to content

Commit

Permalink
- GET /api/solutions now require an organizationSlug or organizationId (
Browse files Browse the repository at this point in the history
#285)

- version bump
- bugfix of GET /api/appusers
- bugfix of GET /api/organizatons
  • Loading branch information
mlhaufe authored Jul 29, 2024
1 parent 868b0ff commit 883a112
Show file tree
Hide file tree
Showing 25 changed files with 197 additions and 96 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@final-hill/cathedral",
"version": "0.10.2",
"version": "0.11.0",
"description": "Requirements management system",
"keywords": [],
"private": true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@ definePageMeta({ name: 'Edit Solution' })
const route = useRoute('Edit Solution'),
{ organizationslug, solutionslug } = route.params,
router = useRouter(),
{ data: solutions } = await useFetch(`/api/solutions/`, { query: { slug: solutionslug } }),
{ data: solutions } = await useFetch(`/api/solutions/`, {
query: {
organizationSlug: organizationslug,
slug: solutionslug
}
}),
solution = ref(solutions.value![0]),
newSlug = ref(solution.value.slug);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,13 @@ import { useFetch } from 'nuxt/app';
useHead({ title: 'Assumptions' })
definePageMeta({ name: 'Assumptions' })
const { solutionslug } = useRoute('Assumptions').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Assumptions').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
organizationSlug: organizationslug,
slug: solutionslug
}
}),
solutionId = solutions.value?.at(0)?.id;
type AssumptionViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Components' })
definePageMeta({ name: 'Environment Components' })
const { solutionslug } = useRoute('Environment Components').params,
{ data: solutions } = await useFetch('/api/solutions', { query: { slug: solutionslug } }),
const { solutionslug, organizationslug } = useRoute('Environment Components').params,
{ data: solutions } = await useFetch('/api/solutions', {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id,
{ data: environmentComponents, status, refresh } = await useFetch('/api/environment-components', {
query: { solutionId }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Constraints' })
definePageMeta({ name: 'Constraints' })
const { solutionslug } = useRoute('Constraints').params,
{ data: solutions } = await useFetch('/api/solutions', { query: { slug: solutionslug } }),
const { solutionslug, organizationslug } = useRoute('Constraints').params,
{ data: solutions } = await useFetch('/api/solutions', {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solution = (solutions.value ?? [])[0],
solutionId = solution.id,
{ data: constraints, status, refresh } = await useFetch('/api/constraints', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Effects' })
definePageMeta({ name: 'Effects' })
const { solutionslug } = useRoute('Effects').params,
const { solutionslug, organizationslug } = useRoute('Effects').params,
{ data: solutions } = await useFetch('/api/solutions', {
query: { slug: solutionslug }
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Glossary' })
definePageMeta({ name: 'Glossary' })
const { solutionslug } = useRoute('Glossary').params,
{ data: solutions } = await useFetch('/api/solutions', { query: { slug: solutionslug } }),
const { solutionslug, organizationslug } = useRoute('Glossary').params,
{ data: solutions } = await useFetch('/api/solutions', {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id;
type GlossaryTermViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Invariants' })
definePageMeta({ name: 'Invariants' })
const { solutionslug } = useRoute('Invariants').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Invariants').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id
type InvariantViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Functionality' })
definePageMeta({ name: 'Goals Functionality' })
const { solutionslug } = useRoute('Functionality').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Functionality').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id
type FunctionalBehaviorViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Limitations' })
definePageMeta({ name: 'Limitations' })
const { solutionslug } = useRoute('Limitations').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Limitations').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id
type LimitViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Obstacles' })
definePageMeta({ name: 'Obstacles' })
const {solutionslug} = useRoute('Obstacles').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Obstacles').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id;
type ObstacleViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Outcomes' })
definePageMeta({ name: 'Outcomes' })
const { solutionslug } = useRoute('Outcomes').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Outcomes').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id;
type OutcomeViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@ import debounce from '~/lib/debounce';
useHead({ title: 'Rationale' })
definePageMeta({ name: 'Rationale' })
const { solutionslug } = useRoute('Rationale').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Rationale').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id;
type JustificationModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@ useHead({ title: 'Scenarios' })
definePageMeta({ name: 'Goal Scenarios' })
const { solutionslug, organizationslug } = useRoute('Scenarios').params,
{ data: solutions } = await useFetch(`/api/solutions/?slug=${solutionslug}`),
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id;
type UserStoryViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,13 @@ useHead({ title: 'Stakeholders' })
definePageMeta({ name: 'Stakeholders' })
const config = useAppConfig(),
{ solutionslug } = useRoute('Stakeholders').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
{ solutionslug, organizationslug } = useRoute('Stakeholders').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id;
type StakeHolderViewModel = {
Expand Down
5 changes: 4 additions & 1 deletion pages/o/[organization-slug]/[solution-slug]/index.client.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ definePageMeta({ name: 'Solution' })
const { solutionslug, organizationslug } = useRoute('Solution').params,
router = useRouter(),
{ data: solutions } = await useFetch('/api/solutions', {
query: { slug: solutionslug }
query: {
organizationSlug: organizationslug,
slug: solutionslug
}
}),
solution = solutions.value![0],
confirm = useConfirm()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Roles & Personnel' })
definePageMeta({ name: 'Roles & Personnel' })
const { solutionslug } = useRoute('Roles & Personnel').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Roles & Personnel').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id
type PersonViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Components' })
definePageMeta({ name: 'System Components' })
const { solutionslug } = useRoute('System Components').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('System Components').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id;
type SystemComponentViewModel = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Functionality' })
definePageMeta({ name: 'Functionality' })
const { solutionslug } = useRoute('Functionality').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Functionality').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solution = solutions.value?.[0]!,
solutionId = solution.id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,13 @@ import { NIL as emptyUuid } from 'uuid';
useHead({ title: 'Scenarios' })
definePageMeta({ name: 'Scenarios' })
const { solutionslug } = useRoute('Scenarios').params,
{ data: solutions } = await useFetch(`/api/solutions?slug=${solutionslug}`),
const { solutionslug, organizationslug } = useRoute('Scenarios').params,
{ data: solutions } = await useFetch(`/api/solutions`, {
query: {
slug: solutionslug,
organizationSlug: organizationslug
}
}),
solutionId = solutions.value?.[0].id!;
type UserStoryViewModel = {
Expand Down
5 changes: 2 additions & 3 deletions pages/o/[organization-slug]/index.client.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<script lang="ts" setup>
import Organization from '~/server/domain/application/Organization';
import type { Properties } from '~/server/domain/Properties';
useHead({ title: 'Organization' })
Expand All @@ -12,7 +11,7 @@ const { organizationslug } = useRoute('Organization').params,
}),
organization = organizations.value![0],
{ refresh, status, data: solutions } = await useFetch('/api/solutions', {
query: { slug: organizationslug }
query: { organizationSlug: organizationslug }
}),
confirm = useConfirm()
Expand All @@ -25,7 +24,7 @@ type SolutionModel = {
const handleOrganizationDelete = async () => {
confirm.require({
message: `Are you sure you want to delete ${Organization.name}? This will also delete all associated solutions.`,
message: `Are you sure you want to delete "${organization.name}"? This will also delete all associated solutions.`,
header: 'Delete Confirmation',
icon: 'pi pi-exclamation-triangle',
rejectLabel: 'Cancel',
Expand Down
4 changes: 2 additions & 2 deletions server/api/appusers/index.get.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ export default defineEventHandler(async (event) => {

// If the user is not associated with the organization
// or is not a system admin, return a 403
if (!sessionUserOrg || !sessionUser.isSystemAdmin)
if (!sessionUserOrg && !sessionUser.isSystemAdmin)
throw createError({
statusCode: 403,
statusMessage: "Forbidden",
message: "You are not associated with the organization"
message: "You are not associated with the organization."
})

type ResponseType = {
Expand Down
Loading

0 comments on commit 883a112

Please sign in to comment.