@@ -5,6 +5,7 @@ help = Help | |||
logo = Logo | |||
sign_in = Sign In | |||
sign_in_with_provider = Sign in with %s | |||
sign_in_with_username_password = Sign in with username and password | |||
sign_in_or = or | |||
sign_out = Sign Out | |||
sign_up = Register |
@@ -0,0 +1,21 @@ | |||
<div class="divider divider-text"> | |||
{{ctx.Locale.Tr "sign_in_or"}} | |||
</div> | |||
<div id="oauth2-login-navigator" class="tw-py-1"> | |||
<div class="tw-flex tw-flex-col tw-justify-center"> | |||
<div id="oauth2-login-navigator-inner" class="tw-flex tw-flex-col tw-flex-wrap tw-items-center tw-gap-2"> | |||
{{range $provider := .OAuth2Providers}} | |||
<a class="{{$provider.Name}} ui button tw-flex tw-items-center tw-justify-center tw-py-2 tw-w-full oauth-login-link" href="{{AppSubUrl}}/user/oauth2/{{$provider.DisplayName}}"> | |||
{{$provider.IconHTML 28}} | |||
{{ctx.Locale.Tr "sign_in_with_provider" $provider.DisplayName}} | |||
</a> | |||
{{end}} | |||
{{if .EnableOpenIDSignIn}} | |||
<a class="openid ui button tw-flex tw-items-center tw-justify-center tw-py-3 tw-w-full" href="{{AppSubUrl}}/user/login/openid"> | |||
{{svg "fontawesome-openid" 28 "tw-mr-2"}} | |||
{{ctx.Locale.Tr "sign_in_with_provider" "OpenID"}} | |||
</a> | |||
{{end}} | |||
</div> | |||
</div> | |||
</div> |
@@ -1,6 +1,5 @@ | |||
{{template "base/head" .}} | |||
<div role="main" aria-label="{{.Title}}" class="page-content user signin{{if .LinkAccountMode}} icon{{end}}"> | |||
{{template "user/auth/signin_navbar" .}} | |||
<div class="ui middle very relaxed page grid"> | |||
<div class="ui container column fluid"> | |||
{{template "user/auth/signin_inner" .}} |
@@ -49,22 +49,8 @@ | |||
</div> | |||
{{end}} | |||
{{if .OAuth2Providers}} | |||
<div class="divider divider-text"> | |||
{{ctx.Locale.Tr "sign_in_or"}} | |||
</div> | |||
<div id="oauth2-login-navigator" class="tw-py-1"> | |||
<div class="tw-flex tw-flex-col tw-justify-center"> | |||
<div id="oauth2-login-navigator-inner" class="tw-flex tw-flex-col tw-flex-wrap tw-items-center tw-gap-2"> | |||
{{range $provider := .OAuth2Providers}} | |||
<a class="{{$provider.Name}} ui button tw-flex tw-items-center tw-justify-center tw-py-2 tw-w-full oauth-login-link" href="{{AppSubUrl}}/user/oauth2/{{$provider.DisplayName}}"> | |||
{{$provider.IconHTML 28}} | |||
{{ctx.Locale.Tr "sign_in_with_provider" $provider.DisplayName}} | |||
</a> | |||
{{end}} | |||
</div> | |||
</div> | |||
</div> | |||
{{if or .OAuth2Providers .EnableOpenIDSignIn}} | |||
{{template "user/auth/oauth_container" .}} | |||
{{end}} | |||
</form> | |||
</div> |
@@ -1,6 +1,5 @@ | |||
{{template "base/head" .}} | |||
<div role="main" aria-label="{{.Title}}" class="page-content user signin openid"> | |||
{{template "user/auth/signin_navbar" .}} | |||
<div class="ui container"> | |||
{{template "base/alert" .}} | |||
<h4 class="ui top attached header center"> | |||
@@ -29,6 +28,11 @@ | |||
<div class="inline field"> | |||
<button class="ui primary button">{{ctx.Locale.Tr "sign_in"}}</button> | |||
</div> | |||
<div class="field"> | |||
<a href="{{AppSubUrl}}/user/login"> | |||
{{ctx.Locale.Tr "sign_in_with_username_password"}} | |||
</a> | |||
</div> | |||
</form> | |||
</div> | |||
</div> |
@@ -1,6 +1,5 @@ | |||
{{template "base/head" .}} | |||
<div role="main" aria-label="{{.Title}}" class="page-content user signin{{if .LinkAccountMode}} icon{{end}}"> | |||
{{template "user/auth/signin_navbar" .}} | |||
<div class="ui middle very relaxed page grid"> | |||
{{template "user/auth/signup_inner" .}} | |||
</div> |
@@ -53,23 +53,8 @@ | |||
</div> | |||
{{end}} | |||
{{end}} | |||
{{if .OAuth2Providers}} | |||
<div class="divider divider-text"> | |||
{{ctx.Locale.Tr "sign_in_or"}} | |||
</div> | |||
<div id="oauth2-login-navigator" class="tw-py-1"> | |||
<div class="tw-flex tw-flex-col tw-justify-center"> | |||
<div id="oauth2-login-navigator-inner" class="tw-flex tw-flex-col tw-flex-wrap tw-items-center tw-gap-2"> | |||
{{range $provider := .OAuth2Providers}} | |||
<a class="{{$provider.Name}} ui button tw-flex tw-items-center tw-justify-center tw-py-2 tw-w-full oauth-login-link" href="{{AppSubUrl}}/user/oauth2/{{$provider.DisplayName}}"> | |||
{{$provider.IconHTML 28}} | |||
{{ctx.Locale.Tr "sign_in_with_provider" $provider.DisplayName}} | |||
</a> | |||
{{end}} | |||
</div> | |||
</div> | |||
</div> | |||
{{if or .OAuth2Providers .EnableOpenIDSignIn}} | |||
{{template "user/auth/oauth_container" .}} | |||
{{end}} | |||
</form> | |||
</div> |
@@ -29,6 +29,18 @@ test('Test Register Form', async ({page}, workerInfo) => { | |||
save_visual(page); | |||
}); | |||
test('Test Login Form OpenID navigation', async ({page}, workerInfo) => { | |||
const response = await page.goto('/user/login'); | |||
expect(response?.status()).toBe(200); // Status OK | |||
await page.getByRole('link', {name: /Sign in with OpenID/ig}).click(); | |||
await page.waitForLoadState('networkidle'); | |||
expect(page.url()).toBe(`${workerInfo.project.use.baseURL}/user/login/openid`); | |||
save_visual(page); | |||
}); | |||
test('Test Login Form', async ({page}, workerInfo) => { | |||
const response = await page.goto('/user/login'); | |||
await expect(response?.status()).toBe(200); // Status OK |
@@ -110,3 +110,7 @@ ENABLED = true | |||
[actions] | |||
ENABLED = true | |||
[openid] | |||
ENABLE_OPENID_SIGNIN = true | |||
ENABLE_OPENID_SIGNUP = true |
@@ -119,3 +119,7 @@ REPLY_TO_ADDRESS = incoming+%{token}@localhost | |||
[actions] | |||
ENABLED = true | |||
[openid] | |||
ENABLE_OPENID_SIGNIN = true | |||
ENABLE_OPENID_SIGNUP = true |
@@ -131,3 +131,7 @@ ENABLED = true | |||
[actions] | |||
ENABLED = true | |||
[openid] | |||
ENABLE_OPENID_SIGNIN = true | |||
ENABLE_OPENID_SIGNUP = true |
@@ -117,3 +117,7 @@ RENDER_CONTENT_MODE=sanitized | |||
[actions] | |||
ENABLED = true | |||
[openid] | |||
ENABLE_OPENID_SIGNIN = true | |||
ENABLE_OPENID_SIGNUP = true |