Adapt the "authentication" section of the web UI to the new API#3007
Adapt the "authentication" section of the web UI to the new API#3007ancorgs merged 7 commits intoagama-project:masterfrom
Conversation
fd32003 to
c956262
Compare
web/src/model/proposal/users.ts
Outdated
| @@ -0,0 +1,30 @@ | |||
| /* | |||
| * Copyright (c) [2025] SUSE LLC | |||
There was a problem hiding this comment.
| * Copyright (c) [2025] SUSE LLC | |
| * Copyright (c) [2026] SUSE LLC |
There was a problem hiding this comment.
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 }) |
There was a problem hiding this comment.
Is the catch errors still valid? does it work correctly?
| patchConfig({ user: data }) | |
| patchConfig({ user: data }) |
There was a problem hiding this comment.
Yes, it works. I will add a screenshot to probe it.
|
In general LGTM, just some minor notes apart of the ones reported by eslint |
8032db0 to
b7b867c
Compare
At the moment of writing, the config does not emit events on every change as the proposal does. Once that is fixed, this should be reverted.
b7b867c to
05c9b39
Compare
dgdavid
left a comment
There was a problem hiding this comment.
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"; |
There was a problem hiding this comment.
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(); |
There was a problem hiding this comment.
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; |
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
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
hasIssuesflag ofUsersSummaryis 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
Screenshots