Releases the lock on the record. Only the user that owns the lock, or a user with superuser privilege, or a user that a schema designer authorizes, can remove a lock. Throws an exception to indicate either the record is locked by another user, another session, or the record was updated.
Record locks are automatically released when the action is committed or reverted. You can use a RECORD_SCRIPT_ALIAS hook to manually remove a lock that has been abandoned.
VBScript
entity.UnlockRecord
Perl
$entity->UnlockRecord();
VBScript
Function Defect_Unlock(param)
' param As Variant
' le nom tu type d'enregistrement est 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
Perl
sub Defect_Unlock {
my($result);
my($param) = @_;
# le nom du type d'enregistrement est Défaut
if (ref ($param) eq "CQEventObject") {
# add your CQEventObject parameter handling code here
} elsif (ref (\$param) eq "SCALAR") {
# add your scalar parameter handling code here
# The Web clients support scalar parameter type only,
# so the hook code added in the above section, needs to be duplicated here
} else {
# add your handling code for other type parameters here, for example:
# die("Unknown parameter type");
}
$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 à certains utilisateurs dotés de privilèges, 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 ($do_unlock) {
$entity->UnlockRecord();
}
else {
$result = "Vous n'êtes pas autorisé à déverrouiller cet enregistrement.";
}
}
return $result;
}