Skip to content

Commit

Permalink
MDL-39207 badges: Generate badge assertions using user's backpack ema…
Browse files Browse the repository at this point in the history
…il if it is set
  • Loading branch information
Yuliya Bozhko committed Apr 28, 2013
1 parent cf5a329 commit 7e06ea6
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 12 deletions.
6 changes: 4 additions & 2 deletions lang/en/badges.php
Expand Up @@ -86,7 +86,9 @@
Currently, only <a href="http://backpack.openbadges.org">Mozilla OpenBadges Backpack</a> is supported. You need to sign up for a backpack service before trying to set up backpack connection on this page.';
$string['backpackdetails'] = 'Backpack settings';
$string['backpackemail'] = 'Email address';
$string['backpackemail_help'] = 'Email address associated with your backpack';
$string['backpackemail_help'] = 'Email address associated with your backpack.
If backpack connection is established, this email address is used instead of your internal email address to push badges to your backpack.';
$string['backpackimport'] = 'Badge import settings';
$string['backpackimport_help'] = 'After backpack connection is successfully established, badges from your backpack can be displayed on your "My Badges" page and your profile page.
Expand All @@ -100,7 +102,7 @@
$string['badgeprivacysetting'] = 'Badge privacy settings';
$string['badgeprivacysetting_help'] = 'Badges you earn can be displayed on your account profile page. This setting allows you to automatically set visibility of the newly earned badges.
You can still control individual badge privacy settings on your <a href="mybadges.php">My badges</a> page.';
You can still control individual badge privacy settings on your "My badges" page.';
$string['badgeprivacysetting_str'] = 'Automatically show badges I earn on my profile page';
$string['badgesalt'] = 'Salt for hashing the recepient\'s email address';
$string['badgesalt_desc'] = 'Using a hash allows backpack services to confirm the badge earner without having to expose their email address. This setting should only use numbers and letters.';
Expand Down
23 changes: 13 additions & 10 deletions lib/badgeslib.php
Expand Up @@ -836,14 +836,17 @@ function badges_get_issued_badge_info($hash) {
bi.dateissued,
bi.dateexpire,
u.email,
b.*
b.*,
bb.email as backpackemail
FROM
{badge} b,
{badge_issued} bi,
{user} u
WHERE b.id = bi.badgeid
AND u.id = bi.userid
AND ' . $DB->sql_compare_text('bi.uniquehash', 40) . ' = ' . $DB->sql_compare_text(':hash', 40),
{badge} b
JOIN {badge_issued} bi
ON b.id = bi.badgeid
JOIN {user} u
ON u.id = bi.userid
LEFT JOIN {badge_backpack} bb
ON bb.userid = bi.userid
WHERE ' . $DB->sql_compare_text('bi.uniquehash', 40) . ' = ' . $DB->sql_compare_text(':hash', 40),
array('hash' => $hash), IGNORE_MISSING);

if ($record) {
Expand All @@ -854,11 +857,11 @@ function badges_get_issued_badge_info($hash) {
}

$url = new moodle_url('/badges/badge.php', array('hash' => $hash));
$email = empty($record->backpackemail) ? $record->email : $record->backpackemail;

// Recipient's email is hashed: <algorithm>$<hash(email + salt)>.
$badgesalt = isset($CFG->badgesalt) ? $CFG->badgesalt : '';
$a['recipient'] = 'sha256$' . hash('sha256', $record->email . $badgesalt);
$a['salt'] = $badgesalt;
$a['recipient'] = 'sha256$' . hash('sha256', $email . $CFG->badges_badgesalt);
$a['salt'] = $CFG->badges_badgesalt;

if ($record->dateexpire) {
$a['expires'] = date('Y-m-d', $record->dateexpire);
Expand Down

0 comments on commit 7e06ea6

Please sign in to comment.