Manuel d'installation et d'exploitation


Log des notifications push

Pour obtenir les logs concernant les notifications push, il faut modifier le log4j.xml et ajouter : 

<category name="org.ametys.plugins.mobileapp.PushNotificationManager" additivity="false">
    <priority value="debug"/>
    <appender-ref ref="notifications"/>
</category>

Pour logguer dans un fichier dédié "notifications": 

<appender name="notifications" class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="Encoding" value="UTF-8"/>
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="${ametys.home.dir}/logs/notifications-%d.log"/>
    </rollingPolicy>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p [%c] (%t;%X{requestURI}) %m%n"/>
    </layout>
    <filter class="org.ametys.core.util.AmetysExceptionFilter"/>
</appender>

Les logs contiendront les token de notifications concernés par la notification.

 

Extraction des tokens de notifications push par personne

Les tokens de notification push sont stockés dans les user préférences d'Ametys. Il est possible d'extraire les tokens pour chaque personne. 

Ce script permet d'obtenir l'identifiant de connexion de chaque personne inscrite aux notifications push  de l'app mobile: 

let population = "utilisateurs";
const UserPreferencesHelper = Ametys.serviceManager.lookup("org.ametys.plugins.mobileapp.UserPreferencesHelper");

printNotificationTokens("loginDeLUtilisateur");

function printNotificationTokens(login){
let user = org.ametys.core.user.UserIdentity.stringToUserIdentity(`${login}#${population}`);
Ametys.console.log(login+":"+UserPreferencesHelper.getNotificationTokens(user).toString());
}

Remplacer "loginDeLUtilisateur" par le login de l'utilisateur. Il est possible de mettre autant de ligne printNotificationTokens("loginDeLUtilisateur"); que souhaité pour obtenir les token de chacune de ces personnes. 

Revoker un token (A ne pas confondre avec les token de notifications)

Lorsqu'un utilisateur s'authentifie sur l'app mobile, un token personnel et dédié à l'app mobile lui est attribué. C'est ce token qui permet ensuite à l'utilisateur de s'authentifier via l'application mobile. 

Les tokens sont stockés en base de données dans la table Authentication_Token, ils sont encodés pour éviter qu’une personne qui lit la base de données soit en mesure d’utiliser le token.

mysql> desc Authentication_Token;
+---------------------+--------------+------+-----+---------+----------------+
| Field               | Type         | Null | Key | Default | Extra          |
+---------------------+--------------+------+-----+---------+----------------+
| id                  | int          | NO   | PRI | NULL    | auto_increment |
| login               | varchar(64)  | NO   |     | NULL    |                |
| population_id       | varchar(200) | NO   |     | NULL    |                |
| token               | varchar(128) | NO   |     | NULL    |                |
| salt                | varchar(64)  | NO   |     | NULL    |                |
| creation_date       | datetime     | YES  |     | NULL    |                |
| end_date            | datetime     | YES  |     | NULL    |                |
| last_update_date    | datetime     | YES  |     | NULL    |                |
| nb_uses_left        | int          | YES  |     | NULL    |                |
| auto_renew_duration | bigint       | YES  |     | NULL    |                |
| context             | varchar(200) | YES  |     | NULL    |                |
| type                | varchar(64)  | NO   |     | NULL    |                |
| token_comment       | longblob     | YES  |     | NULL    |                |
+---------------------+--------------+------+-----+---------+----------------+

Tous les token créés pour l’application mobile ont pour type ‘mobileapp’.

Pour supprimer tous les token d’un utilisateur à partir de son login pour l’application mobile :

delete from Authentication_Token where type='mobileapp' and login='xxx';

Il est possible de forcer la suppression des token de manière automatique à l’aide d’un script shell lancé dans un crontab par exemple en se basant sur la date de création pour supprimer tous les token mobile app qui sont plus vieux que 6 mois.

delete from Authentication_Token where type='mobileapp' and creation_date < date_sub(now(), Interval 6 month);
Retour en haut

MobileApp