diff --git a/models/User.js b/models/User.js index 734b942f28..e3c87848f4 100644 --- a/models/User.js +++ b/models/User.js @@ -1,5 +1,6 @@ var mongoose = require('mongoose'); var bcrypt = require('bcrypt-nodejs'); +var crypto = require('crypto'); var userSchema = new mongoose.Schema({ email: { type: String, unique: true }, @@ -48,4 +49,10 @@ userSchema.methods.comparePassword = function(candidatePassword, cb) { }); }; +userSchema.methods.gravatar = function() { + var md5 = crypto.createHash('md5'); + md5.update(this.email); + return 'https://gravatar.com/avatar/' + md5.digest('hex').toString() + '?s=200'; +}; + module.exports = mongoose.model('User', userSchema); diff --git a/views/account/profile.jade b/views/account/profile.jade index ef2ba7a192..02dfbee1c4 100644 --- a/views/account/profile.jade +++ b/views/account/profile.jade @@ -3,36 +3,41 @@ extends ../layout block content .page-header h3 Profile Information - form.form-horizontal(action='/account/profile', method='POST') - .form-group - label.col-xs-2.control-label(for='email') Email - .col-xs-4 - input.form-control(type='email', name='email', id='email', value='#{user.email}') - .form-group - label.col-xs-2.control-label(for='name') Name - .col-xs-4 - input.form-control(type='text', name='name', id='name', value='#{user.profile.name}') - .form-group - label.col-xs-2.control-label(for='name') Gender - .col-xs-4 - label.radio - input(type='radio', checked=user.profile.gender=='male', name='gender', value='male', data-toggle='radio') - | Male - label.radio - input(type='radio', checked=user.profile.gender=='female', name='gender', value='female', data-toggle='radio') - | Female - .form-group - label.col-xs-2.control-label(for='location') Location - .col-xs-4 - input.form-control(type='text', name='location', id='location', value='#{user.profile.location}') - .form-group - label.col-xs-2.control-label(for='website') Website - .col-xs-4 - input.form-control(type='text', name='website', id='website', value='#{user.profile.website}') - .form-group - .col-xs-offset-2.col-xs-4 - button.btn.btn.btn-primary(type='submit') Update Profile + .row + .col-xs-2 + img(src="#{user.gravatar()}") + small Change your photo at + a(href="http://gravatar.com") Gravatar + .col-xs-10 + .form-group + label.col-xs-2.control-label(for='email') Email + .col-xs-4 + input.form-control(type='email', name='email', id='email', value='#{user.email}') + .form-group + label.col-xs-2.control-label(for='name') Name + .col-xs-4 + input.form-control(type='text', name='name', id='name', value='#{user.profile.name}') + .form-group + label.col-xs-2.control-label(for='name') Gender + .col-xs-4 + label.radio + input(type='radio', checked=user.profile.gender=='male', name='gender', value='male', data-toggle='radio') + | Male + label.radio + input(type='radio', checked=user.profile.gender=='female', name='gender', value='female', data-toggle='radio') + | Female + .form-group + label.col-xs-2.control-label(for='location') Location + .col-xs-4 + input.form-control(type='text', name='location', id='location', value='#{user.profile.location}') + .form-group + label.col-xs-2.control-label(for='website') Website + .col-xs-4 + input.form-control(type='text', name='website', id='website', value='#{user.profile.website}') + .form-group + .col-xs-offset-2.col-xs-4 + button.btn.btn.btn-primary(type='submit') Update Profile