syntax = "proto3";

package devops_server.auth.v1;

import "base/base.proto";

message GetUserReq {
  string email = 1;
}

message User {
  string email = 1;
  bool available = 2;
  string lark_user_id = 3;
  string lark_user_name = 4;
  string lark_department_id = 5;
  string lark_department_name = 6;

  repeated string roles = 7;
  RegionInfo region_info = 8;
}

message RegionInfo {
  bool global = 1;
  repeated string regions = 2;
}

message GetUserResp {
  User user = 1;
  base.BaseResp base_resp = 255;
}

message HasAccessReq {
  string email = 1;
  string uri = 2;
  string method = 3;
}

message HasAccessResp {
  bool has_access = 1;
  RoleScope role_scope = 2;
  base.BaseResp base_resp = 255;
}

message RoleScope {
  string role_name = 1;
  repeated uint64 allowed_tenant_ids = 2;
}

service AuthService {
  rpc HasAccess(HasAccessReq) returns (HasAccessResp) {}
  rpc GetUser(GetUserReq) returns (GetUserResp) {}
}
