Skip to content

Commit

Permalink
Handle corrupted scope values
Browse files Browse the repository at this point in the history
Due to a bug (fixed some commits ago) in the UsersController of the
settings app the scope of the properties can be null (for example, if
lookup server upload was disabled and the user then changed the display
name in the profile information). In that case now the scope menu icon
shows an error to inform the user.

The scope value will not change when other properties are modified until
the user chooses an explicit value from the menu. Note that until a
scope is explicitly set the property will behave as if it is private.

Signed-off-by: Daniel Calviño Sánchez <[email protected]>
  • Loading branch information
danxuliu committed Mar 2, 2021
1 parent 645796f commit 588af7a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
15 changes: 14 additions & 1 deletion apps/settings/js/federationsettingsview.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,14 @@
if (!scopeOnly) {
self._config.set(field, $('#' + field).val());
}
self._config.set(field + 'Scope', $('#' + field + 'scope').val());
// A scope could have been stored as null due to a previous bug.
// Null values should be kept as such until the user explicitly
// sets the right value, but they will be returned as empty
// strings in the template (which would overwrite the null value
// if sent). Due to this an extra class is needed to
// differentiate them.
var initialScopeValue = $('#' + field + 'scope').hasClass('corrupted-scope-value') ? undefined : $('#' + field + 'scope').val();
self._config.set(field + 'Scope', initialScopeValue);

// Set inputs whenever model values change
if (!scopeOnly) {
Expand Down Expand Up @@ -219,6 +226,12 @@
$icon.addClass('icon-link');
$icon.removeClass('hidden');
break;
case '':
case null:
case undefined:
$icon.addClass('icon-error');
$icon.removeClass('hidden');
break;
}
}
});
Expand Down
14 changes: 7 additions & 7 deletions apps/settings/templates/settings/personal/personal.info.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
</div>
<span class="icon-checkmark hidden"></span>
<span class="icon-error hidden" ></span>
<input type="hidden" id="avatarscope" value="<?php p($_['avatarScope']) ?>">
<input type="hidden" id="avatarscope" value="<?php p($_['avatarScope']) ?>"<?php if (is_null($_['avatarScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<div class="personal-settings-setting-box personal-settings-group-box section">
Expand Down Expand Up @@ -125,7 +125,7 @@
<?php } ?>
<span class="icon-checkmark hidden"></span>
<span class="icon-error hidden" ></span>
<input type="hidden" id="displaynamescope" value="<?php p($_['displayNameScope']) ?>">
<input type="hidden" id="displaynamescope" value="<?php p($_['displayNameScope']) ?>"<?php if (is_null($_['displayNameScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<div class="personal-settings-setting-box">
Expand Down Expand Up @@ -173,7 +173,7 @@
<?php if ($_['displayNameChangeSupported']) { ?>
<em><?php p($l->t('For password reset and notifications')); ?></em>
<?php } ?>
<input type="hidden" id="emailscope" value="<?php p($_['emailScope']) ?>">
<input type="hidden" id="emailscope" value="<?php p($_['emailScope']) ?>"<?php if (is_null($_['emailScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php if (!empty($_['phone']) || $_['lookupServerUploadEnabled']) { ?>
Expand All @@ -195,7 +195,7 @@
autocomplete="on" autocapitalize="none" autocorrect="off" />
<span class="icon-checkmark hidden"></span>
<span class="icon-error hidden" ></span>
<input type="hidden" id="phonescope" value="<?php p($_['phoneScope']) ?>">
<input type="hidden" id="phonescope" value="<?php p($_['phoneScope']) ?>"<?php if (is_null($_['phoneScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php } ?>
Expand All @@ -218,7 +218,7 @@
autocomplete="on" autocapitalize="none" autocorrect="off" />
<span class="icon-checkmark hidden"></span>
<span class="icon-error hidden" ></span>
<input type="hidden" id="addressscope" value="<?php p($_['addressScope']) ?>">
<input type="hidden" id="addressscope" value="<?php p($_['addressScope']) ?>"<?php if (is_null($_['addressScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php } ?>
Expand Down Expand Up @@ -272,7 +272,7 @@
/>
<span class="icon-checkmark hidden"></span>
<span class="icon-error hidden" ></span>
<input type="hidden" id="websitescope" value="<?php p($_['websiteScope']) ?>">
<input type="hidden" id="websitescope" value="<?php p($_['websiteScope']) ?>"<?php if (is_null($_['websiteScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php } ?>
Expand Down Expand Up @@ -326,7 +326,7 @@
/>
<span class="icon-checkmark hidden"></span>
<span class="icon-error hidden" ></span>
<input type="hidden" id="twitterscope" value="<?php p($_['twitterScope']) ?>">
<input type="hidden" id="twitterscope" value="<?php p($_['twitterScope']) ?>"<?php if (is_null($_['twitterScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php } ?>
Expand Down

0 comments on commit 588af7a

Please sign in to comment.