Skip to content

Adapt the "authentication" section of the web UI to the new API#3007

Merged
ancorgs merged 7 commits intoagama-project:masterfrom
ancorgs:users_v2_webui
Jan 14, 2026
Merged

Adapt the "authentication" section of the web UI to the new API#3007
ancorgs merged 7 commits intoagama-project:masterfrom
ancorgs:users_v2_webui

Conversation

@ancorgs
Copy link
Copy Markdown
Contributor

@ancorgs ancorgs commented Jan 13, 2026

Problem

#2937 introduced a new API to configure authentication (root and the first non-root user). But the web interface is still not adapted

Solution

This adapts the web interface to use the new API.

It also adds a new entry about Authentication for the installation summary, making it possible to reach the corresponding section of the UI.

Hack alert

To make sure the UI is refreshed after discarding the first user, the page displaying that user gets the information from the proposal, instead of getting it from the configuration.

Once config is fixed in the backend to also emit events on every change that could be reverted. It is done in a separate commit so ease the task.

Bonus

This pull request also include fixes for RegistrationSummary and StorageSumary

Disclaimer

The hasIssues flag of UsersSummary is based on the existence of issues in the scope. Currently such issues are only generated when the service is started. If the configuration is then fixed (let's say a password is set for root) and broken again (let's say the root password is removed afterwards), then the issue will not be re-generated and the interface will not display the corresponding warning icon.

That needs to be fixed in the backend.

Testing

  • Unit tests adapted. Unit tests that were commented out were brought back to life.
  • Tested manually

Screenshots

users1b users2b users-error

@ancorgs ancorgs force-pushed the users_v2_webui branch 3 times, most recently from fd32003 to c956262 Compare January 14, 2026 15:03
@ancorgs ancorgs marked this pull request as ready for review January 14, 2026 15:04
@@ -0,0 +1,30 @@
/*
* Copyright (c) [2025] SUSE LLC
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Copyright (c) [2025] SUSE LLC
* Copyright (c) [2026] SUSE LLC

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is part of a commit that should be reverted soon. So I will fix this via commit --amend to ease that task.


setFirstUser
.mutateAsync({ ...data })
patchConfig({ user: data })
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the catch errors still valid? does it work correctly?

Suggested change
patchConfig({ user: data })
patchConfig({ user: data })

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it works. I will add a screenshot to probe it.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot added.

@teclator
Copy link
Copy Markdown
Contributor

In general LGTM, just some minor notes apart of the ones reported by eslint

@ancorgs ancorgs force-pushed the users_v2_webui branch 2 times, most recently from 8032db0 to b7b867c Compare January 14, 2026 15:50
@coveralls
Copy link
Copy Markdown

coveralls commented Jan 14, 2026

Coverage Status

coverage: 72.875% (+0.6%) from 72.299%
when pulling 018aed0 on ancorgs:users_v2_webui
into 50f474a on agama-project:master.

Copy link
Copy Markdown
Contributor

@dgdavid dgdavid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Thanks a ton for addressing this, specially for taking care of bring these tests alive. I know it's a bit hard to work with the test suite at this moment.

// This should be based on the config, not on the proposal. As a temporary hack (introduced in a
// separate commit that should be easy to revert), we are using the proposal because the config
// does not emit an event on every change.
import { useProposal } from "~/hooks/model/proposal";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NP: not related specifically to your code here, but it is kind of a mess sometimes having ~/hooks/model/proposal/whatever and sometimes, like here, not. Hard to follow/understand.

* Renders a summary text describing the authentication configuration.
*/
const Value = () => {
const config = useConfig();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NP: this is fully ok, but I wanted to mention that I tend to get the config in the main component and pass down via prop. I do so just to save some observers at TanstackQuery layer and because in this kind of simple, one level nesting components looks like a good compromise.

const { registration } = useSystem();
const issues = useIssues("software");
const hasIssues = issues.find((i) => i.class === "software.register_system") !== undefined;
const hasIssues = issues.find((i) => i.class === "software.missing_registration") !== undefined;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! 🙏

@ancorgs ancorgs merged commit dc8e154 into agama-project:master Jan 14, 2026
1 check passed
@imobachgs imobachgs mentioned this pull request Jan 14, 2026
imobachgs added a commit that referenced this pull request Jan 14, 2026
@imobachgs imobachgs mentioned this pull request Mar 17, 2026
imobachgs added a commit that referenced this pull request Mar 17, 2026
Prepare to release version 19.

* #1829
* #2508
* #2772
* #2818
* #2826
* #2848
* #2860
* #2863
* #2864
* #2866
* #2867
* #2869
* #2870
* #2871
* #2872
* #2873
* #2874
* #2875
* #2876
* #2877
* #2880
* #2881
* #2882
* #2884
* #2885
* #2886
* #2891
* #2892
* #2893
* #2894
* #2895
* #2896
* #2897
* #2898
* #2899
* #2900
* #2901
* #2902
* #2903
* #2904
* #2908
* #2909
* #2910
* #2912
* #2913
* #2914
* #2915
* #2916
* #2917
* #2918
* #2920
* #2921
* #2923
* #2924
* #2926
* #2928
* #2929
* #2930
* #2933
* #2934
* #2935
* #2936
* #2937
* #2938
* #2939
* #2942
* #2943
* #2944
* #2945
* #2946
* #2947
* #2948
* #2949
* #2950
* #2951
* #2952
* #2954
* #2955
* #2956
* #2957
* #2958
* #2959
* #2960
* #2961
* #2963
* #2964
* #2965
* #2967
* #2968
* #2969
* #2970
* #2971
* #2972
* #2974
* #2975
* #2977
* #2978
* #2980
* #2981
* #2982
* #2983
* #2984
* #2988
* #2989
* #2990
* #2991
* #2992
* #2993
* #2994
* #2995
* #2996
* #2997
* #2998
* #2999
* #3000
* #3001
* #3002
* #3004
* #3005
* #3006
* #3007
* #3008
* #3009
* #3011
* #3012
* #3013
* #3014
* #3015
* #3016
* #3018
* #3019
* #3020
* #3021
* #3022
* #3023
* #3024
* #3025
* #3026
* #3027
* #3028
* #3029
* #3030
* #3031
* #3033
* #3034
* #3035
* #3036
* #3037
* #3039
* #3040
* #3041
* #3042
* #3043
* #3044
* #3045
* #3046
* #3047
* #3048
* #3049
* #3050
* #3051
* #3052
* #3053
* #3054
* #3055
* #3056
* #3057
* #3058
* #3060
* #3061
* #3062
* #3063
* #3064
* #3065
* #3066
* #3067
* #3068
* #3069
* #3070
* #3071
* #3072
* #3073
* #3074
* #3075
* #3076
* #3077
* #3078
* #3079
* #3086
* #3087
* #3088
* #3089
* #3090
* #3091
* #3092
* #3093
* #3094
* #3095
* #3096
* #3097
* #3098
* #3099
* #3100
* #3101
* #3102
* #3103
* #3104
* #3105
* #3106
* #3107
* #3108
* #3109
* #3110
* #3112
* #3113
* #3114
* #3115
* #3116
* #3117
* #3118
* #3119
* #3120
* #3122
* #3123
* #3124
* #3127
* #3128
* #3129
* #3130
* #3131
* #3133
* #3134
* #3135
* #3136
* #3137
* #3138
* #3139
* #3140
* #3141
* #3142
* #3143
* #3144
* #3145
* #3146
* #3147
* #3148
* #3149
* #3150
* #3151
* #3152
* #3153
* #3154
* #3155
* #3157
* #3158
* #3159
* #3160
* #3161
* #3162
* #3163
* #3164
* #3165
* #3166
* #3167
* #3168
* #3169
* #3170
* #3174
* #3175
* #3176
* #3177
* #3178
* #3179
* #3181
* #3182
* #3184
* #3185
* #3186
* #3188
* #3189
* #3190
* #3191
* #3192
* #3194
* #3195
* #3196
* #3197
* #3198
* #3199
* #3200
* #3201
* #3202
* #3203
* #3205
* #3206
* #3208
* #3209
* #3210
* #3213
* #3214
* #3215
* #3216
* #3217
* #3218
* #3219
* #3220
* #3222
* #3223
* #3224
* #3225
* #3226
* #3227
* #3228
* #3229
* #3230
* #3231
* #3232
* #3233
* #3234
* #3235
* #3236
* #3237
* #3238
* #3239
* #3240
* #3241
* #3242
* #3243
* #3244
* #3246
* #3247
* #3248
* #3250
* #3251
* #3252
* #3253
* #3254
* #3255
* #3256
* #3257
* #3258
* #3259
* #3260
* #3261
* #3262
* #3263
* #3265
* #3266
* #3267
* #3268
* #3269
* #3270
* #3271
* #3272
* #3273
* #3274
* #3275
* #3276
* #3277
* #3278
* #3279
* #3280
* #3281
* #3282
* #3283
* #3284
* #3285
* #3286
* #3287
* #3288
* #3289
* #3290
* #3291
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants