╭ changed ──╮ │src/web.zig│ ╰───────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │173 .addkey => handleUserKeyAdd(io, request, allocator, base, server.admin_repo_path, server.users_dir, server.session_store), │ │174 .removekey => handleUserKeyRemove(io, request, allocator, base, server.admin_repo_path, server.users_dir, server.session_store),│ │175 .settings => handleRepoSettings(io, request, allocator, path, host), │ │176 - .grant => handleRoles(io, request, allocator, base, host, .grant), │ │177 - .revoke => handleRoles(io, request, allocator, base, host, .revoke), │ │178 - .promote => handleRoles(io, request, allocator, base, host, .promote), │ │179 - .demote => handleRoles(io, request, allocator, base, host, .demote), │ │176 + .grant => handleMembers(io, request, allocator, base, host, .grant), │ │177 + .revoke => handleMembers(io, request, allocator, base, host, .revoke), │ │178 + .promote => handleMembers(io, request, allocator, base, host, .promote), │ │179 + .demote => handleMembers(io, request, allocator, base, host, .demote), │ │180 .new => handleNew(io, request, allocator, base, host), │ │181 .edit => handleEdit(io, request, allocator, base, host), │ │182 .remove => handleRemove(io, request, allocator, base, host), │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │760 }); │ │761 } │ │762 │ │763 -// act on a user's role in the repo the roles url `base` names, as one of its │ │763 +// act on a user's role in the repo the members url `base` names, as one of its │ │764 // owners, then redirect back to the list. the add form names the user in its │ │765 // body and the row forms in the url. │ │766 -fn handleRoles(io: std.Io, request: *std.http.Server.Request, allocator: std.mem.Allocator, base: []const u8, host: Host, action: ui.Repo.Roles.Action) !void { │ │766 +fn handleMembers(io: std.Io, request: *std.http.Server.Request, allocator: std.mem.Allocator, base: []const u8, host: Host, action: ui.Repo.Members.Action) !void {│ │767 const server = switch (host) { │ │768 .server => |server| server, │ │769 .local => return respondRepoNotFound(request), │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────╮ │770 }; │ │771 const route = routeFromUrl(host, base) orelse return respondRepoNotFound(request);│ │772 - if (route != .repo_roles) return respondRepoNotFound(request); │ │773 - const target = route.repo_roles; │ │772 + if (route != .repo_members) return respondRepoNotFound(request); │ │773 + const target = route.repo_members; │ │774 var arena = std.heap.ArenaAllocator.init(allocator); │ │775 defer arena.deinit(); │ │776 const identity = target.name.slice(); │ ╰───────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │789 var admin_repo = try rp.Repo(.xit, evt.admin_repo_opts).open(io, allocator, .{ .path = server.admin_repo_path }); │ │790 defer admin_repo.deinit(io, allocator); │ │791 const moment = try evt.currentMoment(evt.admin_repo_opts, &admin_repo); │ │792 - break :blk ui.Repo.Roles.perform(io, allocator, moment, server.users_dir, actor, identity, action, name) catch |err| switch (err) { │ │792 + break :blk ui.Repo.Members.perform(io, allocator, moment, server.users_dir, actor, identity, action, name) catch |err| switch (err) {│ │793 error.NotFound, error.EventNotFound => return respondRepoNotFound(request), │ │794 else => return err, │ │795 }; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │796 }; │ │797 if (failure) |value| { │ │798 - const location = try (ui.RoutablePage.repoRolesRoute(identity, target.start) orelse return error.RouteTooLong).toUrl(&arena); │ │799 - return respondFormFailure(request, allocator, server.session_store, location, .{ .repo_roles = .{ .failure = value, .name = name } }); │ │798 + const location = try (ui.RoutablePage.repoMembersRoute(identity, target.start) orelse return error.RouteTooLong).toUrl(&arena); │ │799 + return respondFormFailure(request, allocator, server.session_store, location, .{ .repo_members = .{ .failure = value, .name = name } }); │ │800 } │ │801 - const location = try (ui.Repo.Roles.landingRoute(identity, target.start, actor, action, name) orelse return error.RouteTooLong).toUrl(&arena); │ │801 + const location = try (ui.Repo.Members.landingRoute(identity, target.start, actor, action, name) orelse return error.RouteTooLong).toUrl(&arena);│ │802 try request.respond("", .{ .status = .see_other, .keep_alive = false, .extra_headers = &.{.{ .name = "location", .value = location }} }); │ │803 } │ │804 │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯