Sunday, January 1, 2017

The action for verifying a new user request did not yet work at all.

This action is a list action with a parameter dialog.

It must be executable by anonymous since the user account is not yet active.

And it must be invokeable using a permalink of type http://127.0.0.1:8000/api/users/Register?an=verify

Unfortunately this (until now) showed the login window, despite the fact that users.Register actor does not require authentication. That was because in extjs/index.html we have this:

{# anonymous request using permalink: forward request.path as "on_login" URL #}
{%- if settings.SITE.user_model and not request.user.authenticated and on_ready -%}
    {%- set on_ready = "Lino.show_login_window(" + py2js(request.path) + ")" -%}
{%- endif -%}

This feature is needed in order to make permalinks work also when the user needs to reconnect.

I added and not settings.SITE.plugins.users.online_registration to the if condition. That’s of course just a cheating workaround because it disables the permalink login feature on sites with online registration.

And that wasn’t not all. The next challenge was that I got a Sorry, dialog action without base_params.mk error when trying to submit that dialog. Because this was the first dialog action which does not require a current row. I fixed this by a little change in linoweb.js which needs to be ported to extjs6 as well.

TODO: verify per email? or per username? or per internal id?

Change the submit_insert per table, not per model

After submitting the insert window of users.Register, users should get a message “Your registration has been submitted. You should now check your inbox and verify.”

We have several cases of customized submit_insert actions.

Until now it was enough to define them per model.

It seems that now we want to do this per table as well.