[Freeipa-devel] [PATCH] 720-729 OTP usability improvements
Petr Vobornik
pvoborni at redhat.com
Tue Sep 9 15:48:57 UTC 2014
On 3.9.2014 21:44, Endi Sukma Dewata wrote:
> On 8/22/2014 3:31 AM, Petr Vobornik wrote:
>> On 12.8.2014 17:59, Endi Sukma Dewata wrote:
>>> On 8/5/2014 6:31 AM, Petr Vobornik wrote:>>
>>>> ticket: https://fedorahosted.org/freeipa/ticket/4402
>>
snip
>
>>>> [PATCH] 727 webui: hide empty fields and sections
>>>>
>>>> Hide widgets without a value. Must be explicitly turned on. In
>>>> widget by
>>>> `hidden_if_empty` flag. Or globally by `hide_empty_widgets` flag.
>>>> Global
>>>> hiding can be individually turned off by `ignore_empty_hiding` flag.
>>>
>>> In item #2 of ticket #4402 I was originally thinking the widget
>>> visibility would be determined by the token type.
>>
>> Originally I wrote it that way but with this patch it became redundant.
>>
>>> Any plan to add the
>>> token type field in the future?
>>
>> maybe, I don't have any strong feelings about it. Will users benefit
>> from adding it? If yes, it should be also added to CLI.
>
> Can the users tell which type of token they have based on the existing
> fields? There is a model field which is populated with the type (e.g.
> totp or hotp). But since the value can be changed to anything it's not a
> reliable way to determine the type. I don't think it's very
> user-friendly to ask the user to see whether the type-specific fields
> are shown in order to determine the type.
>
> I can't say there's a big benefit by adding the field, but maybe some
> admins might find it useful, and it can be used to sort/filter out
> search results.
>
>> Atm. token type is derived from object classes. It exists only in add
>> operation as a virtual attribute. We can check a presence of
>> ipatokenhotp or ipatokentotp object classes to simulate the field.
>
> Yes, if people can add an attribute usually they will expect to be able
> to see what they added.
The issue is that it's not an attribute per se.
Nathaniel: do you think we should add a virtual output param(computed
from object class) for the token type since 'model' could be easily
overwritten? I would prefer to do it both in Web UI and CLI.
>
>>> Will the "counter" field strictly have a
>>> value with HOTP only and "clock offset & interval" fields strictly have
>>> value with TOTP only? Do these fields contain the configured values or
>>> the effective values? I was just thinking maybe in the future some of
>>> these fields might be configured empty and they will use the default
>>> values instead. If that's not a problem then ACK.
>>
>> Respective fields are present only in corresponding object classes ->
>> there won't be an HTOP token with 'clock offset'. If they are present,
>> they have a default value. -> No false hiding -> Shouldn't be a problem.
>>
>> Btw: Other of my other original intents was to hide it based on ACI
>> rights. The issues is that the rights are not present without
>> corresponding OC. Hiding in such case is dangerous - explicitly disabled
>> in patch 728.
>>
>> What do you think about setting `hide_empty_widgets` global setting to
>> True?
>
> On a read-only page I think it's OK to hide empty fields. But on edit
> page I don't think we should do that by default.
Maybe we should first clarify what is a read-only page. All details
pages are writable if user has the rights or read-only if he doesn't.
But mostly it depends on individual fields/attributes.
>
> Does "empty" mean "unset", or "blank" like empty string/array? Does
> "unset" always mean "non-editable and invisible" and "blank" always mean
> "editable and visible but it's just empty"? If this definition isn't
> strictly followed there could be an editable field that accidentally
> gets hidden because it's empty.
My intent was to show everything what user can edit. And hide fields:
1. for which he doesn't have read rights
2. have no (undefined) or empty('') value
3. are explicitly hidden by other logic - not related to this patch
When thinking about #1. Maybe we should base it on a presence or rather
not presence of a specific objectclass, rather than on a value. That way
it would be less confusing for newcomers. The logic is: if fields is
bound to an object class and the class is not present (that also means
we don't have attribute level rights) -> hide it.
#2 is questionable. IMHO it would require user tests. Also hiding on ''
value might not be always desirable. Nevertheless I like the behavior
but it may be caused by the fact that I already know what to expect.
>
> Generally if a field is supposed to be hidden in an edit page because of
> other condition (e.g. token type), not because of the value, the code
> should also use that condition instead of relying on the value being
> unset. In this particular case, instead of:
>
> if (field !== undefined) {
> // display field
> }
>
> we probably should do:
>
> var type = ...
>
> if (type == 'hotp') {
> // display hotp fields
>
> } else { // totp
> // display totp fields
> }
I agree - use case #3.
>
> For now the type can be determined by the availability of certain
> type-specific fields, but in the future we may add the type itself.
>
btw somewhere is a rebase issue which leads too:
if (that.readable !== undefined) {
visible = visible && that.readable;
}
if (that.readable !== undefined) {
visible = visible && that.readable;
}
I'll fix that when we agree on an approach.
snip
>
>>> 4. If no "Owner" is specified when adding a token, it will default to
>>> admin. Is this the intended behavior?
>>
>> Sadly yes.
>
> Maybe the adder dialog should show admin (or the current user?) as the
> default owner instead of empty?
>
Note: all patches except for 727 are ACKed.
--
Petr Vobornik
More information about the Freeipa-devel
mailing list