auth: Add Sign in with Apple support.

This implementation overrides some of PSA's internal backend
functions to handle `state` value with redis as the standard
way doesn't work because of apple sending required details
in the form of POST request.

Includes a mixin test class that'll be useful for testing
Native auth flow.

Thanks to Mateusz Mandera for the idea of using redis and
other important work on this.

Documentation rewritten by tabbott.

Co-authored-by: Mateusz Mandera <mateusz.mandera@zulip.com>
This commit is contained in:
Dinesh
2020-06-09 15:34:21 +05:30
committed by Tim Abbott
parent f0f42f7a94
commit dc90d54b08
21 changed files with 541 additions and 13 deletions

View File

@@ -699,6 +699,29 @@ button.login-social-button {
}
}
/*
Apple is very particular about the appearance of its authentication
buttons, which means we cannot use our generic label+icon system for
their authentication backend while complying with their policies.
So here we use the buttons provided by Apple, which include the sign
in text (Sign in with Apple/Continue with Apple). To make these
consistent with other buttons, we request buttons of size 328x50 and
the following styling sets the appropriate width and height to make it
fit with other other social authentication buttons. We also set the
font size to zero to hide the text our own code in the
login/registration pages would generate, to avoid extra conditionals
in the HTML templates.
*/
button#login_auth_button_apple,
button#register_auth_button_apple {
width: 328px;
height: 50px;
background-size: auto 100%;
background-position: 0px 100%;
font-size: 0px;
}
#find-account-section {
text-decoration: none;
font-weight: 600;