Skip to content

Commit b203613

Browse files
committed
feat: add sensitive preferences with encryption check
1 parent 4257b83 commit b203613

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

lib/main.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,9 @@ class Button1Format(BaseModel):
272272
class Button2Format(BaseModel):
273273
sensitive_value: str
274274

275+
class Button3Format(BaseModel):
276+
preference_value: str
277+
275278

276279
@APP.post("/api/verify_initial_value")
277280
async def verify_initial_value(
@@ -293,6 +296,18 @@ async def verify_sensitive_value(
293296
return responses.JSONResponse(content={"sensitive_value": sensitive_value}, status_code=200)
294297

295298

299+
@APP.post("/api/verify_preference_value")
300+
async def verify_preference_value(
301+
input1: Button3Format,
302+
nc: Annotated[NextcloudApp, Depends(nc_app)],
303+
):
304+
nc.preferences_ex.set_value("test_ex_app_sensitive_field", input1.preference_value, sensitive=True)
305+
preference_value = nc.preferences_ex.get_value("test_ex_app_sensitive_field")
306+
print("Old preference value: ", input1.preference_value)
307+
print("Preference value: ", preference_value)
308+
return responses.JSONResponse(content={"preference_value": preference_value}, status_code=200)
309+
310+
296311
@APP.post("/api/test_menu")
297312
async def test_menu_handler(
298313
file: UiActionFileInfo,

src/store/example.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,22 @@ const actions = {
5353
})
5454
},
5555

56+
verifyPreferenceValue(context, value) {
57+
axios.post(generateUrl(`${APP_API_PROXY_URL_PREFIX}/${EX_APP_ID}/api/verify_preference_value`), {
58+
preference_value: value,
59+
})
60+
.then((res) => {
61+
if ('preference_value' in res.data && res.data.preference_value === value) {
62+
showSuccess(t('ui_example', 'Preference value is correct'))
63+
} else {
64+
showError(t('ui_example', 'Preference value is incorrect'))
65+
}
66+
})
67+
.catch(() => {
68+
showError(t('ui_example', 'Preference value is incorrect'))
69+
})
70+
},
71+
5672
sendNextcloudFileToExApp(context, fileInfo) {
5773
axios.post(generateUrl(`${APP_API_PROXY_URL_PREFIX}/${EX_APP_ID}/api/nextcloud_file`), {
5874
file_info: fileInfo,

src/views/ExAppView.vue

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020
{{ t('ui_example', 'Verify sensitive value') }}
2121
</NcButton>
2222
</div>
23+
24+
<div style="margin: 10px 0; display: flex; align-items: center; width: 100%; justify-content: center; flex-direction: column;">
25+
<NcInputField :value.sync="preference_value"
26+
:label="t('ui_example', 'Test preference sensitive value')" />
27+
<NcButton style="margin: 10px 0;" @click="verifyPreferenceValue">
28+
{{ t('ui_example', 'Verify preference value') }}
29+
</NcButton>
30+
</div>
2331
</div>
2432
</NcAppContent>
2533
</NcContent>
@@ -45,6 +53,7 @@ export default {
4553
data() {
4654
return {
4755
initialState: JSON.parse(loadState('app_api', 'ui_example_state')),
56+
preference_value: 'test_preference_value',
4857
}
4958
},
5059
computed: {
@@ -59,6 +68,9 @@ export default {
5968
verifySensitiveValue() {
6069
this.$store.dispatch('verifySensitiveValue', this.initialState?.initial_sensitive_value)
6170
},
71+
verifyPreferenceValue() {
72+
this.$store.dispatch('verifyPreferenceValue', this.preference_value)
73+
},
6274
},
6375
}
6476
</script>

0 commit comments

Comments
 (0)