feat: implement automation key management with middleware and routes for organization API keys, invite improvements

This commit is contained in:
Rotimi Best
2026-03-13 18:40:07 +01:00
parent 77a1188573
commit 492f8dc5ed
71 changed files with 3655 additions and 456 deletions
@@ -5,7 +5,7 @@ import type { CloneCourseRequest } from '../utils/types';
import type { TCourseClone } from '@cio/utils/validation/course';
import { ZCourseClone } from '@cio/utils/validation/course';
import { currentOrg } from '$lib/utils/store/org';
import generateSlug from '$lib/utils/functions/generateSlug';
import { generateSlug } from '@cio/utils/functions';
import { get } from 'svelte/store';
import { goto } from '$app/navigation';
import { mapZodErrorsToTranslations } from '$lib/utils/validation';
@@ -26,7 +26,7 @@ export class CourseCloneApi extends BaseApiWithErrors {
*/
async clone(courseId: string, title: string, description?: string) {
// Generate unique slug from the title
const slug = generateSlug(title);
const slug = generateSlug(title, { appendTimestamp: true });
// Prepare data for validation
const data: TCourseClone = {
@@ -206,7 +206,7 @@
const isExerciseUnlocked = $derived(exerciseContentItem?.isUnlocked ?? false);
</script>
<Page.Header isSticky={true} class="min-h-[36px]">
<Page.Header isSticky={true} class="z-250! min-h-[36px]">
<Page.HeaderContent>
<Page.Title>{$questionnaire.title || 'Exercise'}</Page.Title>
</Page.HeaderContent>