Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Workspace Setup and Management #139

Open
1 of 32 tasks
FelixTJDietrich opened this issue Nov 9, 2024 · 0 comments
Open
1 of 32 tasks

Workspace Setup and Management #139

FelixTJDietrich opened this issue Nov 9, 2024 · 0 comments

Comments

@FelixTJDietrich
Copy link
Collaborator

FelixTJDietrich commented Nov 9, 2024

Objective

Enable admins to create, configure, and manage multiple workspaces in Hephaestus, with support for users switching between workspaces and and signing in our signing out of workspaces.

What is a workspace?
A workspace in Hephaestus is a dedicated, self-contained environment that organizes resources, users, and settings for a specific project, team, or educational context. Each workspace operates independently, with its own linked repositories, configurations, and permissions, allowing users to seamlessly manage multiple projects or courses within a single Hephaestus account. Workspaces enable clear boundaries between projects, so members can focus on relevant resources and collaborate without interference from other workspaces.

Tasks

  • Require login for using Hephaestus #163
  • Workspace creation
    • Set title
    • Set/upload workspace icon
    • Set workspace identity provider (GitHub or GitLab LRZ)
    • Set data-sensitivity (open, sensitive)
    • Set access token
    • Set(up) webhook
    • Set repositories to monitor
  • Workspace switching
    • Workspace icon component with isSelected state
    • Workspace sidebar component (stacked icons, sliding sidebar on small/mobile screens)
    • Workspace title component (similar to Slack, contains icon on mobile, dropdown on desktop)
    • Hide workspace switcher button (see Slack)
    • Add a Workspace button (+ in sidebar on desktop, bottom of workspace list on mobile, see Slack)
      • Sign into another workspace
      • Find workspaces
      • Link other identity provider, if not already linked (GitHub or GitLab LRZ)
      • Admin option: Create a workspace
    • Sign out of workspace (see Slack)
    • Store last selected workspace to local storage
    • State preservation to maintain context (e.g., open files, last-viewed page) when switching
  • Workspace configuration / management
    • Default workspace setup for development (quick start)
    • Update title
    • Update workspace icon
    • Update data-sensitivity (open, sensitive)
    • Update access token
    • Update webhook
    • Update repositories to monitor
  • Associate gitprovide entities with identity provider and workspace (primary key = entity ID + provider ID)
  • Restrict access via Row Level Security (RLS) to workspace members

Examples

  • GitHub
    • AET
      • Workspace for the ls1intum organization
  • GitLab
    • iPraktikum Client Project , e.g. Siemens, Sixt, ...
      • Workspace for the GitLab sub-group of the team
      • Sensitive data that needs to be handled on-premise
    • iPraktikum Intro Course
      • Workspace for the whole intro course ~60 students
      • Each student should only see their own private repository
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant