login

<     >

2023-07-20 19:43:47 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

use different color for private repos

diff --git a/cogit/cogit.lua b/cogit/cogit.lua
index 780d926..8c4ea5d 100644
--- a/cogit/cogit.lua
+++ b/cogit/cogit.lua
@@ -46,12 +46,8 @@ local function diff_cb(line_type, line)
     return line .. "\n"
 end
 
-local function allowed(is_admin, desc)
-    if is_admin then return true end
-    if desc == "" or desc:sub(1, 1) == ":" then
-        return false
-    end
-    return true
+local function is_private(desc)
+    return desc == "" or desc:sub(1, 1) == ":"
 end
 
 local LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG = 0, 1, 2, 3
@@ -116,9 +112,10 @@ function Cogit:routes()
         self:scan()
         local repos = {}
         for _, repo in ipairs(self.sorted_repos) do
-            if allowed(is_admin, repo.desc) then
+            local private = is_private(repo.desc)
+            if is_admin or not private then
                 local desc = repo.desc:gsub("^:", "")
-                table.insert(repos, {name=repo.name, desc=desc})
+                table.insert(repos, {name=repo.name, desc=desc, private=private})
             end
         end
         local env = {title=self.title, is_admin=is_admin, repos=repos}
@@ -162,7 +159,7 @@ function Cogit:routes()
     {"GET", "/repo/([%w_-]+)",
     function (req, rname)
         local is_admin = self:is_admin(req.cookies)
-        if not allowed(is_admin, self.descs[rname]) then
+        if not is_admin and is_private(self.descs[rname]) then
             return "/login", 303
         end
         local repo = self.repos[rname]
@@ -177,7 +174,7 @@ function Cogit:routes()
     {"GET", "/repo/([%w_-]+)/history/([%w_-]+)",
     function (req, rname, first)
         local is_admin = self:is_admin(req.cookies)
-        if not allowed(is_admin, self.descs[rname]) then
+        if not is_admin and is_private(self.descs[rname]) then
             return "/login", 303
         end
         local repo = self.repos[rname]
@@ -192,7 +189,7 @@ function Cogit:routes()
     {"GET", "/repo/([%w_-]+)/commit/([%w_-]+)",
     function (req, rname, cid)
         local is_admin = self:is_admin(req.cookies)
-        if not allowed(is_admin, self.descs[rname]) then
+        if not is_admin and is_private(self.descs[rname]) then
             return "/login", 303
         end
         local repo = self.repos[rname]
@@ -210,7 +207,7 @@ function Cogit:routes()
     {"GET", "/repo/([%w_-]+)/commit/([%w_-]+)/tree/(.*)",
     function (req, rname, cid, path)
         local is_admin = self:is_admin(req.cookies)
-        if not allowed(is_admin, self.descs[rname]) then
+        if not is_admin and is_private(self.descs[rname]) then
             return "/login", 303
         end
         local repo = self.repos[rname]

diff --git a/view/home.html b/view/home.html
index 5832cc9..f2421f9 100644
--- a/view/home.html
+++ b/view/home.html
@@ -17,6 +17,7 @@
       padding: 3px 12px;
       border: 1px solid #006;
     }
+    .private { background-color: #FFFF90; }
   </style>
 </head>
 <body>
@@ -40,12 +41,17 @@
       <th>description</th>
     </tr>
     % for repo in $repos do
+    % if $repo.private then
+    %   set td_class = 'class="private"'
+    % else
+    %   set td_class = ''
+    % end
     <tr>
-      <td><a href="/repo/{{$repo.name}}">{{$repo.name}}</a></td>
+      <td {{!$td_class}}><a href="/repo/{{$repo.name}}">{{$repo.name}}</a></td>
       % if #$repo.desc > 0 then
-      <td>{{$repo.desc}}</td>
+      <td {{!$td_class}}>{{$repo.desc}}</td>
       % else
-      <td><em>no description</em></td>
+      <td {{!$td_class}}><em>no description</em></td>
       % end
     </tr>
     % end