Right now we make the cancel button non-reactive when
verification is complete, but it still disrupts the
login transition because in many cases most of the other
screen elements have been faded out.
This commit fades it out as well.
Right now the logo is placed in the bottom of the screen, but
in the future we'll want other things there as well.
To make that possible, this commit adds a footer container.
One step toward implementing Web Login is adding the ability to
show "Login Failed" as a notification banner.
This is because with Web Login, the auth prompt is occluded so can't
be used to show an error message itself.
This commit adds the necessary code to show the Login Failed
notification, but doesn't actually call that code yet.
It will be used later when Web Login support is added.
In order to implement Web Login in GDM we're going to need to be
able to generate QR codes. It's possible we'll need QR codes for
other future features as well.
As a first step, this commit adds API for outputting a GIcon
of a QR code for a specified URL.
GDM doesn't provide any sort of "ack" when a users input
has been acknowledged by the underlying PAM conversation.
We know when a bit of input has been processed when the next
bit of input or output gets requested (or authentication succeeds).
This commit emits a signal any time there is such a request so it
can be connected to (which will later be used to know when to close
a dialog used for Web Login)
Now that we have a list of service definitions mapped to what
sort of authentication they can do, conveniently already in
the order of preferred default services, there's no reason
we shouldn't use it for updating the default service.
This commit changes the code to do that instead of the
long if/else if code that was there before
SSSD wants the ability to control all authentication mechanisms
it can support from a single pam conversation.
This commit adds support for a new "switchable" authentication service
that allows for that. It leverages GDM's new JSON extension with a
new "auth-selection" protocol provided by pam_sss.
This initial commit just supports password like mechanisms. Future
commits will add support for mechanisms that support other authentication
roles.
The latest login screen designs here:
https://gitlab.gnome.org/Teams/Design/os-mockups/-/blob/master/lock-login/login-authentication.png
shows a new "Login Options" menu in the corner.
As a first step toward acheiving that goal, this commit adds a new
AuthMenuButton class. It's a fairly generic control derived from
the code used to show the sessions menu button. One key difference
is it allows a multi-valued, partial key for its entries. This provides
flexibility that we'll need to leverage later.
Nothing uses this new class yet. A subsequent commit will change the
sessions menu button code over to use it, and a commit after that will
use it for Login Options.
Soon, we're going to need to do some other things than firing
off the auth prompt when beginning verification.
In prepration for that, this commit creates a wrapper function,
_beginVerification, that can be easily augmented later.
In the future, the code will need to do a partial reset where
some state is carried over or explicitly specified.
This commit prepares for that by allowing the request type and
querying service to be specified at reset time.
Since sliced images are provided in a two dimensional grid, instead
of linear strip, there's no way to infer the size of an individual
cell inside a sliced image. Because of this limitation the texture
cache api for loading an image requires the cell size (called grid
size in the api) be explicitly specified. But because sliced images
are scalable SVGs, the texture cache code needs to know the output
animation size as well, to ensure the animation is rendered with an
appropriately high resolution. The API doesn't ask for this
information, however, instead just assuming the output size is the same
as the cell size. That effectively means that spinners can only be
16x16 pixels big (because our spinner slicable images have cells that
are nominally 16x16).
This commit changes the API to allow the output image size to be
specified as well, and fixes the code to render at the appropriate
output size.