Don't require project name for link auth

This commit is contained in:
Bojan Serafimov
2022-06-22 18:31:24 -04:00
committed by Dmitry Ivanov
parent 6d7dc384a5
commit 93e050afe3
2 changed files with 15 additions and 6 deletions

View File

@@ -92,9 +92,14 @@ impl<'a> Api<'a> {
async fn get_auth_info(&self) -> Result<AuthInfo> {
let mut url = self.endpoint.clone();
let project_name = self
.creds
.project_name
.as_ref()
.map_err(|e| ConsoleAuthError::BadProjectName(e.clone()))?;
url.path_segments_mut().push("proxy_get_role_secret");
url.query_pairs_mut()
.append_pair("project", &self.creds.project_name)
.append_pair("project", project_name)
.append_pair("role", &self.creds.user);
// TODO: use a proper logger
@@ -116,9 +121,13 @@ impl<'a> Api<'a> {
/// Wake up the compute node and return the corresponding connection info.
async fn wake_compute(&self) -> Result<DatabaseInfo> {
let mut url = self.endpoint.clone();
let project_name = self
.creds
.project_name
.as_ref()
.map_err(|e| ConsoleAuthError::BadProjectName(e.clone()))?;
url.path_segments_mut().push("proxy_wake_compute");
url.query_pairs_mut()
.append_pair("project", &self.creds.project_name);
url.query_pairs_mut().append_pair("project", project_name);
// TODO: use a proper logger
println!("cplane request: {url}");

View File

@@ -8,7 +8,7 @@ use std::collections::HashMap;
use thiserror::Error;
use tokio::io::{AsyncRead, AsyncWrite};
#[derive(Debug, Error, PartialEq)]
#[derive(Debug, Error, PartialEq, Eq, Clone)]
pub enum ClientCredsParseError {
#[error("Parameter `{0}` is missing in startup packet.")]
MissingKey(&'static str),
@@ -44,7 +44,7 @@ impl UserFacingError for ClientCredsParseError {}
pub struct ClientCredentials {
pub user: String,
pub dbname: String,
pub project_name: String,
pub project_name: Result<String, ClientCredsParseError>,
}
impl ClientCredentials {
@@ -67,7 +67,7 @@ impl ClientCredentials {
let user = get_param("user")?;
let dbname = get_param("database")?;
let project_name = get_param("project").ok();
let project_name = get_project_name(sni_data, common_name, project_name.as_deref())?;
let project_name = get_project_name(sni_data, common_name, project_name.as_deref());
Ok(Self {
user,