diff options
| author | Azul <azul@riseup.net> | 2015-09-17 19:48:36 +0200 | 
|---|---|---|
| committer | Azul <azul@riseup.net> | 2015-09-17 19:48:36 +0200 | 
| commit | 9e1a41733468d4a3f5102b04277b9cd7b52d0a45 (patch) | |
| tree | 9d2edbecffaeb95400601475727d422668ea296c | |
| parent | ff0b3facac13513832d05346c5308b6a4a558f2b (diff) | |
| parent | 2d24b1fe1918ad96df4469f8902c3ddcb9bda5f9 (diff) | |
Merge remote-tracking branch 'alster/feature/extra-signup-params'
| -rw-r--r-- | spec/session_spec.js | 33 | ||||
| -rw-r--r-- | src/jqueryRest.js | 2 | ||||
| -rw-r--r-- | src/srp_session.js | 15 | 
3 files changed, 48 insertions, 2 deletions
diff --git a/spec/session_spec.js b/spec/session_spec.js index 2f58d25..b37d7b1 100644 --- a/spec/session_spec.js +++ b/spec/session_spec.js @@ -72,4 +72,37 @@ describe("Session", function() {      session = new srp.Session(account);      expect(session.login()).toBe(compare.username);    }); + +  it('calculates secure user parameters for signup', function() { +    var compare = short_b; +    account = new srp.Account(compare.username, compare.password); +    session = new srp.Session(account); + +    var signupParams = session.signup(); + +    expect(Object.keys(signupParams)).toEqual(['login', 'password_salt', 'password_verifier']); +  }); + +  it('calculates secure user parameters for update', function() { +    var compare = short_b; +    account = new srp.Account(compare.username, compare.password); +    session = new srp.Session(account); + +    var signupParams = session.update(); + +    expect(Object.keys(signupParams)).toEqual(['login', 'password_salt', 'password_verifier']); +  }); + +  it("grabs extra signup parameters from account", function() { +    account = jasmine.createSpyObj('account', ['login', 'password']); +    account.loginParams = function() { +      return { +        "extraParam": "foobar" +      } +    } +    session = new srp.Session(account); + +    expect(session.signup().extraParam).toBe("foobar"); +  }); +  }); diff --git a/src/jqueryRest.js b/src/jqueryRest.js index 103f700..0c58eb2 100644 --- a/src/jqueryRest.js +++ b/src/jqueryRest.js @@ -11,7 +11,7 @@ srp.remote = (function(){          url: "/1/users/" + session.id() + ".json",          type: 'PUT',          headers: { Authorization: 'Token token="' + token + '"' }, -        data: {user: session.signup() } +        data: {user: session.update() }        });      } diff --git a/src/srp_session.js b/src/srp_session.js index bdff9c4..88f19d5 100644 --- a/src/srp_session.js +++ b/src/srp_session.js @@ -22,7 +22,7 @@ srp.Session = function(account, calculate) {      return A;    }; -  this.signup = function() { +  this.update = function() {      var salt = calculate.randomSalt();      var x = calculate.X(account.login(), account.password(), salt);      return { @@ -30,6 +30,19 @@ srp.Session = function(account, calculate) {        password_salt: salt,        password_verifier: calculate.V(x)      }; +  } + +  this.signup = function() { +    var loginParams = this.update(); + +    if (account.loginParams) { +      var extraParams = account.loginParams(); +      for (var attr in extraParams) { +        loginParams[attr] = extraParams[attr]; +      } +    } + +    return loginParams;    };    this.handshake = function() {  | 
