liquid_feedback_frontend
diff app/main/member/_action/update_api_key.lua @ 51:0849be391140
Public read access; Read-only API for initiatives; Prepared integration of OpenID
| author | bsw |
|---|---|
| date | Sun Apr 04 22:05:11 2010 +0200 (2010-04-04) |
| parents | |
| children | 976d493106a1 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/app/main/member/_action/update_api_key.lua Sun Apr 04 22:05:11 2010 +0200 1.3 @@ -0,0 +1,54 @@ 1.4 + 1.5 +local setting_key = "liquidfeedback_frontend_api_key" 1.6 +local setting = Setting:by_pk(app.session.member.id, setting_key) 1.7 + 1.8 +local api_key 1.9 + 1.10 +if param.get("delete", atom.boolean) then 1.11 + 1.12 + if setting then 1.13 + setting:destroy() 1.14 + end 1.15 + 1.16 +else 1.17 + 1.18 + if not setting then 1.19 + setting = Setting:new() 1.20 + setting.member_id = app.session.member.id 1.21 + setting.key = setting_key 1.22 + end 1.23 + 1.24 + api_key = multirand.string( 1.25 + 20, 1.26 + '23456789BCDFGHJKLMNPQRSTVWXYZbcdfghjkmnpqrstvwxyz' 1.27 + ) 1.28 + 1.29 + setting.value = api_key 1.30 + 1.31 + setting:save() 1.32 +end 1.33 + 1.34 + 1.35 +local setting_key = "liquidfeedback_frontend_api_key_history" 1.36 + 1.37 +setting = SettingMap:new() 1.38 +setting.member_id = app.session.member.id 1.39 +setting.key = setting_key 1.40 +setting.subkey = db:query("SELECT now()")[1].now 1.41 +setting.value = api_key or "" 1.42 +local dberr = setting:try_save() 1.43 + 1.44 +if dberr then 1.45 + if dberr:is_kind_of("IntegrityConstraintViolation.UniqueViolation") then 1.46 + slot.put_into("error", _"The API key has been changed too fast.") 1.47 + return 1.48 + else 1.49 + dberr:escalate() 1.50 + end 1.51 +end 1.52 + 1.53 +if not api_key then 1.54 + slot.put_into("notice", _"API key has been deleted") 1.55 +else 1.56 + slot.put_into("notice", _"API key has been updated") 1.57 +end