Diff
1diff --git a/server/server.go b/server/server.go
2index 5cfa6192a967f08123e8334ce80a4b98743df35e..e3f66d3c5a6e49bc2ed4b9ecf6db364768647dd9 100644
3--- a/server/server.go
4+++ b/server/server.go
5@@ -41,6 +41,16 @@ func NewServer(cfg *config.Config) (*Server, error) {
6 // Add the initial admin keys to the list of admins.
7 fb.AdditionalAdmins = cfg.InitialAdminKeys
8 cfg = cfg.WithBackend(fb)
9+
10+ // Create internal key.
11+ _, err = keygen.NewWithWrite(
12+ filepath.Join(cfg.DataPath, cfg.SSH.InternalKeyPath),
13+ nil,
14+ keygen.Ed25519,
15+ )
16+ if err != nil {
17+ return nil, err
18+ }
19 }
20
21 srv := &Server{
22diff --git a/ui/pages/selection/selection.go b/ui/pages/selection/selection.go
23index bfd1f31f656118150815302dad0686096048a80b..944251ebf5b04141115800f6487c9752d193edc9 100644
24--- a/ui/pages/selection/selection.go
25+++ b/ui/pages/selection/selection.go
26@@ -9,6 +9,7 @@ import (
27 tea "github.com/charmbracelet/bubbletea"
28 "github.com/charmbracelet/lipgloss"
29 "github.com/charmbracelet/log"
30+ "github.com/charmbracelet/soft-serve/server/backend"
31 "github.com/charmbracelet/soft-serve/ui/common"
32 "github.com/charmbracelet/soft-serve/ui/components/code"
33 "github.com/charmbracelet/soft-serve/ui/components/selector"
34@@ -182,23 +183,30 @@ func (s *Selection) FullHelp() [][]key.Binding {
35 func (s *Selection) Init() tea.Cmd {
36 var readmeCmd tea.Cmd
37 cfg := s.common.Config()
38+ if cfg == nil {
39+ return nil
40+ }
41+
42 pk := s.common.PublicKey()
43- if cfg == nil || pk == nil {
44+ if pk == nil && !cfg.Backend.AllowKeyless() {
45 return nil
46 }
47+
48 repos, err := cfg.Backend.Repositories()
49 if err != nil {
50 return common.ErrorCmd(err)
51 }
52 sortedItems := make(Items, 0)
53- // Put configured repos first
54 for _, r := range repos {
55- item, err := NewItem(r, cfg)
56- if err != nil {
57- logger.Debugf("ui: failed to create item for %s: %v", r.Name(), err)
58- continue
59+ al := cfg.Backend.AccessLevel(r.Name(), pk)
60+ if al >= backend.ReadOnlyAccess {
61+ item, err := NewItem(r, cfg)
62+ if err != nil {
63+ logger.Debugf("ui: failed to create item for %s: %v", r.Name(), err)
64+ continue
65+ }
66+ sortedItems = append(sortedItems, item)
67 }
68- sortedItems = append(sortedItems, item)
69 }
70 sort.Sort(sortedItems)
71 items := make([]selector.IdentifiableItem, len(sortedItems))