sub Defect_Initialization {
my($actionname, $actiontype) = @_;
# $actionname a la forme d'un scalaire chaîne
# $actiontype a la forme d'un scalaire long
# l'action est Verrouiller l'enregistrement
# le nom du type d'enregistrement est Défaut
# C'est ici que se configure l'action.
$entity->LockRecord(0);
}
sub Defect_LockRecord {
my($result);
my($param) = @_;
# le nom du type d'enregistrement est Défaut
$entity->LockRecord(0);
return $result;
}
Perl
sub Defect_Unlock {
my($result);
my($param) = @_;
# le nom du type d'enregistrement est Défaut
$result = "";
my $locked_by = $entity->GetLockOwner();
if ($locked_by ne "") {
my $do_unlock = $session->IsUserSuperUser();
if (! $do_unlock) {
# Si l'utilisateur en cours détient le verrou, laissez-le retirer ce verrou.
my $username = $session->GetUserLoginName();
if ($username =~ /^$locked_by$/i) {
$do_unlock = 1;
}
}
if (! $do_unlock) {
# Options complémentaires d'"autorisation" du déverrouillage :
# 1) donner l'autorisation à la condition que l'utilisateur soit membre d'un groupe "déverrouillage"
# obtenir les groupes de l'utilisateur et vérifier si ce sont des groupes "déverrouillage"
# 2) donner l'autorisation à des utilisateurs privilégiés, comme l'administrateur de sécurité
# vérifier dans la session le privilège choisi par l'utilisateur
# 3) bien d'autres possibilités
#
# if ( user-should-be-allowed-to-unlock-the-record ) {
# $do_unlock = 1;
# }
}
if ($do_unlock) {
$entity->UnlockRecord();
}
else {
$result = "Vous n'êtes pas autorisé à déverrouiller cet enregistrement.";
}
}
return $result;
}
VBScript
Function Defect_Unlock(param)
' param As Variant
' record type name is Defect
REM add your hook code here
Dim result
Dim session
Dim locked_by
' Récupérez la session
set session = GetSession
locked_by = GetLockOwner
if (locked_by <> "") then
Dim do_unlock
do_unlock = session.IsUserSuperUser
if (NOT do_unlock) then
' Si l'utilisateur actuel met en attente le verrouillage, demandez le déverrouillage.
Dim username
username = session.GetUserLoginName
if (username = locked_by) then
do_unlock = true
end if
end if
if (NOT do_unlock) then
' Options supplémentaires visant à "autoriser" le déverrouillage :
'
' 1) autorisez-le si l'utilisateur est un membre d'un groupe "unlock"
' récupérez les groupes de l'utilisateur, vérifiez s'il est membre
'
' 2) autorisez certains utilisateurs privilégiés, par exemple l'administrateur de la sécurité
' contrôlez la session en matière de privilège sélectionné
'
' 3) de nombreuses autres possibilités
end if
if (do_unlock) then
UnlockRecord
else
result = "Vous n'êtes pas autorisé à déverrouiller cet enregistrement."
end if
end if
End Function