PUBLIC void httpSetAuthForm(HttpRoute *parent, cchar *loginPage, cchar *loginService, cchar *logoutService, cchar *loggedIn) { HttpAuth *auth; HttpRoute *route; bool secure; secure = 0; auth = parent->auth; auth->loginPage = sclone(loginPage); if (loggedIn) { auth->loggedIn = sclone(loggedIn); } /* Create routes without auth for the loginPage, loginService and logoutService */ if ((route = httpCreateInheritedRoute(parent)) != 0) { if (sstarts(loginPage, "https:///")) { loginPage = &loginPage[8]; secure = 1; } httpSetRoutePattern(route, loginPage, 0); route->auth->type = 0; if (secure) { httpAddRouteCondition(route, "secure", 0, 0); } httpFinalizeRoute(route); } if (loginService && *loginService) { if (sstarts(loginService, "https:///")) { loginService = &loginService[8]; secure = 1; } route = httpCreateActionRoute(parent, loginService, loginServiceProc); httpSetRouteMethods(route, "POST"); route->auth->type = 0; if (secure) { httpAddRouteCondition(route, "secure", 0, 0); } } if (logoutService && *logoutService) { if (sstarts(logoutService, "https://")) { logoutService = &logoutService[8]; secure = 1; } httpSetRouteMethods(route, "POST"); route = httpCreateActionRoute(parent, logoutService, logoutServiceProc); route->auth->type = 0; if (secure) { httpAddRouteCondition(route, "secure", 0, 0); } } }
static HttpRoute *createLoginRoute(HttpRoute *route, cchar *pattern, HttpAction action) { bool secure; secure = 0; if (sstarts(pattern, "https:///")) { pattern = &pattern[8]; secure = 1; } else if (sstarts(pattern, "http:///")) { pattern = &pattern[7]; } if ((route = httpCreateInheritedRoute(route)) != 0) { httpSetRoutePattern(route, sjoin("^", pattern, "$", NULL), 0); if (secure) { httpAddRouteCondition(route, "secure", "https://", HTTP_ROUTE_REDIRECT); } if (action) { route->handler = route->http->actionHandler; httpDefineAction(pattern, action); } httpFinalizeRoute(route); } return route; }