35
36:- module(config_user_profile, []). 37:- use_module(library(settings)). 38:- use_module(library(broadcast)). 39:- use_module(library(user_profile)). 40:- use_module(library(profile/backend/profile_prolog), []). 41
42:- use_module(swish(lib/plugin/profile)). 43
44:- set_setting(user_profile:backend, impl_profile_prolog). 45:- listen(http(pre_server_start), profile_open_db([])).
61:- multifile
62 user_profile:attribute/3,
63 user_profile:attribute_mapping/3.
70user_profile:attribute(name, string, []).
71user_profile:attribute(given_name, string, []).
72user_profile:attribute(family_name, string, []).
73user_profile:attribute(nick_name, string, []).
74user_profile:attribute(email, email, []).
75user_profile:attribute(email_verified, boolean, [access(ro)]).
76user_profile:attribute(email_notifications, oneof([immediate,daily,never]),
77 [default(immediate)]).
78user_profile:attribute(avatar, url(http), [hidden(true)]).
79user_profile:attribute(home_page, url(http), []).
80user_profile:attribute(last_login, time_stamp('%+'), [access(ro)]).
81user_profile:attribute(last_peer, string, [access(ro)]).
82user_profile:attribute(identity_provider, atom, [access(ro)]).
83user_profile:attribute(external_identity, string, [hidden(true)]).
91user_profile:attribute_mapping(external_identity, _, sub).
92user_profile:attribute_mapping(external_identity, _, user_id). 93user_profile:attribute_mapping(avatar, _, picture).
94user_profile:attribute_mapping(nick_name, local, user).
95user_profile:attribute_mapping(external_identity, local, user).
96user_profile:attribute_mapping(Attr, _, Attr).
97
98 101
102:- listen(user_profile(modified(User, Name, _Old, New)),
103 propagate_profile_change(User, Name, New)). 104
105propagate_profile_change(User, email, _) :-
106 !,
107 set_profile(User, email_verified=false).
108propagate_profile_change(_, _, _)
User profile configuration
Configure maintenance of user profiles. This config file may be optionally enabled if one or more, notably federated, authentication modules are loaded. It maintains a database of identified users.
The user profile infra structure depends on the pack profile, which is linked to SWISH as a git submodule. To use profiles, run
*/