@@ -70,6 +70,8 @@ func (r *httpRoutes) Register(e *echo.Echo) {
7070 v1 .GET ("/connectors/supported-connector-types" , httpserver .AuthorizeHandler (r .GetSupportedType , api2 .AdminRole ))
7171 v1 .GET ("/connector/:type" , httpserver .AuthorizeHandler (r .GetConnectors , api2 .AdminRole ))
7272 v1 .POST ("/connector" , httpserver .AuthorizeHandler (r .CreateConnector , api2 .AdminRole ))
73+ v1 .POST ("/connector/auth0" , httpserver .AuthorizeHandler (r .CreateAuth0Connector , api2 .AdminRole ))
74+
7375 v1 .PUT ("/connector" , httpserver .AuthorizeHandler (r .UpdateConnector , api2 .AdminRole ))
7476 v1 .DELETE ("/connector/:id" , httpserver .AuthorizeHandler (r .DeleteConnector , api2 .AdminRole ))
7577
@@ -1104,6 +1106,76 @@ func (r *httpRoutes) CreateConnector(ctx echo.Context) error {
11041106 return ctx .JSON (http .StatusCreated , res )
11051107}
11061108
1109+ // CreateConnector godoc
1110+ //
1111+ // @Summary Create Connector
1112+ // @Description Creates new OIDC connector.
1113+ // @Security BearerToken
1114+ // @Tags connectors
1115+ // @Produce json
1116+ // @Success 200
1117+ // @Router /auth/api/v1/connector/supported-connector-types [post]
1118+ func (r * httpRoutes ) CreateAuth0Connector (ctx echo.Context ) error {
1119+ var req api.CreateAuth0ConnectorRequest
1120+ if err := bindValidate (ctx , & req ); err != nil {
1121+ return echo .NewHTTPError (http .StatusBadRequest , err )
1122+ }
1123+
1124+ creator := utils .CreateAuth0Connector
1125+
1126+
1127+ dexRequest := utils.CreateAuth0ConnectorRequest {
1128+ Issuer : req .Issuer ,
1129+ ClientID : req .ClientID ,
1130+ ClientSecret : req .ClientSecret ,
1131+ Domain : req .Domain ,
1132+ }
1133+ dexreq , err := creator (dexRequest )
1134+ if err != nil {
1135+ r .logger .Error ("Error on Creating dex request" , zap .Error (err ))
1136+ return echo .NewHTTPError (http .StatusBadRequest , err )
1137+ }
1138+ dexClient , err := newDexClient (dexGrpcAddress )
1139+ if err != nil {
1140+ r .logger .Error ("failed to create dex client" , zap .Error (err ))
1141+ return echo .NewHTTPError (http .StatusBadRequest , "failed to create dex client" )
1142+ }
1143+ res , err := dexClient .CreateConnector (context .TODO (), dexreq )
1144+ if err != nil {
1145+ r .logger .Error ("failed to create dex connector" , zap .Error (err ))
1146+ return echo .NewHTTPError (http .StatusBadRequest , "failed to create dex connector" )
1147+ }
1148+ if res .AlreadyExists {
1149+ return echo .NewHTTPError (http .StatusBadRequest , "connector already exists" )
1150+ }
1151+ err = r .db .CreateConnector (& db.Connector {
1152+ LastUpdate : time .Now (),
1153+ ConnectorID : "auth0" ,
1154+ ConnectorType : "oidc" ,
1155+ ConnectorSubType : "auth0" ,
1156+ })
1157+ if err != nil {
1158+ r .logger .Error ("failed to create connector" , zap .Error (err ))
1159+ return echo .NewHTTPError (http .StatusBadRequest , "failed to create connector" )
1160+ }
1161+ // restart dex pod on connector creation
1162+ err = utils .RestartDexPod ()
1163+ if err != nil {
1164+ r .logger .Error ("failed to restart dex pod" , zap .Error (err ))
1165+ return echo .NewHTTPError (http .StatusBadRequest , "failed to restart dex pod" )
1166+ }
1167+
1168+ return ctx .JSON (http .StatusCreated , res )
1169+ }
1170+
1171+
1172+
1173+
1174+
1175+
1176+
1177+
1178+
11071179// UpdateConnector godoc
11081180//
11091181// @Summary Update Connector
0 commit comments