X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/522d525a4dcbf11a22d14ea78a0c362272533c34..504fc7b60000d154aa33fbced8f581adb69f953f:/lib/controller/localdb/conn.go diff --git a/lib/controller/localdb/conn.go b/lib/controller/localdb/conn.go index 835ab43505..ac120c6f38 100644 --- a/lib/controller/localdb/conn.go +++ b/lib/controller/localdb/conn.go @@ -6,11 +6,10 @@ package localdb import ( "context" - "errors" - "git.curoverse.com/arvados.git/lib/controller/railsproxy" - "git.curoverse.com/arvados.git/lib/controller/rpc" - "git.curoverse.com/arvados.git/sdk/go/arvados" + "git.arvados.org/arvados.git/lib/controller/railsproxy" + "git.arvados.org/arvados.git/lib/controller/rpc" + "git.arvados.org/arvados.git/sdk/go/arvados" ) type railsProxy = rpc.Conn @@ -18,26 +17,28 @@ type railsProxy = rpc.Conn type Conn struct { cluster *arvados.Cluster *railsProxy // handles API methods that aren't defined on Conn itself - - googleLoginController + loginController } func NewConn(cluster *arvados.Cluster) *Conn { - return &Conn{ + railsProxy := railsproxy.NewConn(cluster) + var conn Conn + conn = Conn{ cluster: cluster, - railsProxy: railsproxy.NewConn(cluster), + railsProxy: railsProxy, } + conn.loginController = chooseLoginController(cluster, &conn) + return &conn +} + +func (conn *Conn) Logout(ctx context.Context, opts arvados.LogoutOptions) (arvados.LogoutResponse, error) { + return conn.loginController.Logout(ctx, opts) } func (conn *Conn) Login(ctx context.Context, opts arvados.LoginOptions) (arvados.LoginResponse, error) { - wantGoogle := conn.cluster.Login.GoogleClientID != "" - wantSSO := conn.cluster.Login.ProviderAppID != "" - if wantGoogle == wantSSO { - return arvados.LoginResponse{}, errors.New("configuration problem: exactly one of Login.GoogleClientID and Login.ProviderAppID must be configured") - } else if wantGoogle { - return conn.googleLoginController.Login(ctx, conn.cluster, conn.railsProxy, opts) - } else { - // Proxy to RailsAPI, which hands off to sso-provider. - return conn.railsProxy.Login(ctx, opts) - } + return conn.loginController.Login(ctx, opts) +} + +func (conn *Conn) UserAuthenticate(ctx context.Context, opts arvados.UserAuthenticateOptions) (arvados.APIClientAuthorization, error) { + return conn.loginController.UserAuthenticate(ctx, opts) }