Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions api/proto/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,12 @@
- [user/messages/user_svc/add_role_response.proto](#user_messages_user_svc_add_role_response-proto)
- [AddRoleResponse](#user-messages-user_svc-AddRoleResponse)

- [user/messages/user_svc/edit_request.proto](#user_messages_user_svc_edit_request-proto)
- [EditRequest](#user-messages-user_svc-EditRequest)

- [user/messages/user_svc/edit_response.proto](#user_messages_user_svc_edit_response-proto)
- [EditResponse](#user-messages-user_svc-EditResponse)

- [user/messages/user_svc/get_request.proto](#user_messages_user_svc_get_request-proto)
- [GetRequest](#user-messages-user_svc-GetRequest)

Expand Down Expand Up @@ -789,6 +795,9 @@ See components/backend/internal/middleware/rbac.go.
| email | [string](#string) | | |
| roles | [GlobalRole](#user-entities-GlobalRole) | repeated | Populated from casbin on fetch; not persisted in ent DB. |
| modified_at | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | |
| renku_url | [string](#string) | | User accounts links. |
| github_url | [string](#string) | | |
| linkedin_url | [string](#string) | | |



Expand Down Expand Up @@ -5746,6 +5755,71 @@ casbin role for this hackathon; `is_waiting` is false once approved.



<a name="user_messages_user_svc_edit_request-proto"></a>
<p align="right"><a href="#top">Top</a></p>

## user/messages/user_svc/edit_request.proto



<a name="user-messages-user_svc-EditRequest"></a>

### EditRequest



| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| user_id | [string](#string) | | |
| renku_url | [string](#string) | optional | |
| github_url | [string](#string) | optional | |
| linkedin_url | [string](#string) | optional | |















<a name="user_messages_user_svc_edit_response-proto"></a>
<p align="right"><a href="#top">Top</a></p>

## user/messages/user_svc/edit_response.proto



<a name="user-messages-user_svc-EditResponse"></a>

### EditResponse



| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| user | [user.entities.User](#user-entities-User) | | |















<a name="user_messages_user_svc_get_request-proto"></a>
<p align="right"><a href="#top">Top</a></p>

Expand Down Expand Up @@ -6064,6 +6138,7 @@ casbin role for this hackathon; `is_waiting` is false once approved.
| ----------- | ------------ | ------------- | ------------|
| List | [messages.user_svc.ListRequest](#user-messages-user_svc-ListRequest) | [messages.user_svc.ListResponse](#user-messages-user_svc-ListResponse) | |
| Get | [messages.user_svc.GetRequest](#user-messages-user_svc-GetRequest) | [messages.user_svc.GetResponse](#user-messages-user_svc-GetResponse) | |
| Edit | [messages.user_svc.EditRequest](#user-messages-user_svc-EditRequest) | [messages.user_svc.EditResponse](#user-messages-user_svc-EditResponse) | |
| WhoAmI | [messages.user_svc.WhoAmIRequest](#user-messages-user_svc-WhoAmIRequest) | [messages.user_svc.WhoAmIResponse](#user-messages-user_svc-WhoAmIResponse) | |
| Register | [messages.user_svc.RegisterRequest](#user-messages-user_svc-RegisterRequest) | [messages.user_svc.RegisterResponse](#user-messages-user_svc-RegisterResponse) | |
| AddRole | [messages.user_svc.AddRoleRequest](#user-messages-user_svc-AddRoleRequest) | [messages.user_svc.AddRoleResponse](#user-messages-user_svc-AddRoleResponse) | |
Expand Down
5 changes: 5 additions & 0 deletions api/proto/user/entities/user.proto
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,9 @@ message User {
// Populated from casbin on fetch; not persisted in ent DB.
repeated GlobalRole roles = 7;
google.protobuf.Timestamp modified_at = 8;

// User accounts links.
string renku_url = 9;
string github_url = 10;
string linkedin_url = 11;
}
3 changes: 2 additions & 1 deletion api/proto/user/messages/user_svc/add_role_request.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ syntax = "proto3";

package user.messages.user_svc;

import "buf/validate/validate.proto";
import "user/entities/global_role.proto";

option go_package = "github.com/swissdatasciencecenter/hackagon/components/backend/internal/proto/user/messages/user_svc";

message AddRoleRequest {
string user_id = 1;
string user_id = 1 [(buf.validate.field).string.uuid = true];
user.entities.GlobalRole role = 2;
}
14 changes: 14 additions & 0 deletions api/proto/user/messages/user_svc/edit_request.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
syntax = "proto3";

package user.messages.user_svc;

import "buf/validate/validate.proto";

option go_package = "github.com/swissdatasciencecenter/hackagon/components/backend/internal/proto/user/messages/user_svc";

message EditRequest {
string user_id = 1 [(buf.validate.field).string.uuid = true];
optional string renku_url = 2 [(buf.validate.field).string.max_len = 2048];
optional string github_url = 3 [(buf.validate.field).string.max_len = 2048];
optional string linkedin_url = 4 [(buf.validate.field).string.max_len = 2048];
}
11 changes: 11 additions & 0 deletions api/proto/user/messages/user_svc/edit_response.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
syntax = "proto3";

package user.messages.user_svc;

import "user/entities/user.proto";

option go_package = "github.com/swissdatasciencecenter/hackagon/components/backend/internal/proto/user/messages/user_svc";

message EditResponse {
user.entities.User user = 1;
}
4 changes: 3 additions & 1 deletion api/proto/user/messages/user_svc/get_request.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ syntax = "proto3";

package user.messages.user_svc;

import "buf/validate/validate.proto";

option go_package = "github.com/swissdatasciencecenter/hackagon/components/backend/internal/proto/user/messages/user_svc";

message GetRequest {
string user_id = 1;
string user_id = 1 [(buf.validate.field).string.uuid = true];
}
3 changes: 2 additions & 1 deletion api/proto/user/messages/user_svc/remove_role_request.proto
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ syntax = "proto3";

package user.messages.user_svc;

import "buf/validate/validate.proto";
import "user/entities/global_role.proto";

option go_package = "github.com/swissdatasciencecenter/hackagon/components/backend/internal/proto/user/messages/user_svc";

message RemoveRoleRequest {
string user_id = 1;
string user_id = 1 [(buf.validate.field).string.uuid = true];
user.entities.GlobalRole role = 2;
}
3 changes: 3 additions & 0 deletions api/proto/user/user_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ package user;

import "user/messages/user_svc/add_role_request.proto";
import "user/messages/user_svc/add_role_response.proto";
import "user/messages/user_svc/edit_request.proto";
import "user/messages/user_svc/edit_response.proto";
import "user/messages/user_svc/get_request.proto";
import "user/messages/user_svc/get_response.proto";
import "user/messages/user_svc/list_request.proto";
Expand All @@ -20,6 +22,7 @@ option go_package = "github.com/swissdatasciencecenter/hackagon/components/backe
service UserService {
rpc List(user.messages.user_svc.ListRequest) returns (user.messages.user_svc.ListResponse);
rpc Get(user.messages.user_svc.GetRequest) returns (user.messages.user_svc.GetResponse);
rpc Edit(user.messages.user_svc.EditRequest) returns (user.messages.user_svc.EditResponse);
rpc WhoAmI(user.messages.user_svc.WhoAmIRequest) returns (user.messages.user_svc.WhoAmIResponse);
rpc Register(user.messages.user_svc.RegisterRequest) returns (user.messages.user_svc.RegisterResponse);
rpc AddRole(user.messages.user_svc.AddRoleRequest) returns (user.messages.user_svc.AddRoleResponse);
Expand Down
3 changes: 3 additions & 0 deletions components/backend/Schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,9 @@ An authenticated user, synced from Keycloak on first login.
| `keycloak_id` | string | yes | yes | no | no | Unique identifier from Keycloak (sub claim). |
| `display_name` | string | no | no | no | yes | Preferred display name of the user. |
| `email` | string | no | no | no | yes | Email of the user, same as in Keycloak |
| `renku` | string | no | no | no | yes | Renku account of the user. |
| `github` | string | no | no | no | yes | Github account of the user. |
| `linkedin` | string | no | no | no | yes | LinkedIn account of the user. |
| `created_at` | time.Time | yes | no | yes | yes | Timestamp when the user was first seen. |
| `modified_at` | time.Time | yes | no | no | yes | Timestamp of the last profile update. |

Expand Down
6 changes: 6 additions & 0 deletions components/backend/db/schema/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ func (User) Fields() []ent.Field {
Comment("Preferred display name of the user."),
field.String("email").Optional().Default("").
Comment("Email of the user, same as in Keycloak"),
field.String("renku").Optional().Default("").
Comment("Renku account of the user."),
field.String("github").Optional().Default("").
Comment("Github account of the user."),
field.String("linkedin").Optional().Default("").
Comment("LinkedIn account of the user."),
field.Time("created_at").Immutable().Default(time.Now).
Comment("Timestamp when the user was first seen."),
field.Time("modified_at").
Expand Down
3 changes: 3 additions & 0 deletions components/backend/ent/migrate/schema.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading