Skip to content

Commit fa20647

Browse files
Add /register view
1 parent 9161d11 commit fa20647

File tree

3 files changed

+74
-4
lines changed

3 files changed

+74
-4
lines changed

default-views/account/register.hbs

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<title>Register</title>
7+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
8+
</head>
9+
<body>
10+
<div class="container">
11+
<h4>Register</h4>
12+
</div>
13+
<div class="container">
14+
<form method="post" action="/api/accounts/new">
15+
<div class="form-group">
16+
{{#if error}}
17+
<div class="row">
18+
<div class="col-md-12">
19+
<p class="text-danger"><strong>{{error}}</strong></p>
20+
</div>
21+
</div>
22+
{{/if}}
23+
<div class="row">
24+
<div class="col-md-12">
25+
<label for="username">Username:</label>
26+
<input type="text" class="form-control" name="username" id="username" placeholder="alice" />
27+
</div>
28+
</div>
29+
<div class="row">
30+
<div class="col-md-12">
31+
<label for="password">Password:</label>
32+
<input type="password" class="form-control" name="password" id="password" />
33+
</div>
34+
</div>
35+
<div class="row">
36+
<div class="col-md-12">
37+
<label for="name">Name:</label>
38+
<input type="name" class="form-control" name="name" id="name" />
39+
</div>
40+
</div>
41+
<div class="row">
42+
<div class="col-md-12">
43+
<label for="email">Email:</label>
44+
<input type="email" class="form-control" name="email" id="email" />
45+
</div>
46+
</div>
47+
<input type="hidden" name="returnToUrl" value="{{returnToUrl}}" />
48+
49+
</div>
50+
<button type="submit" class="btn btn-primary" id="register">Register</button>
51+
52+
<div>Already have an account?
53+
<a href="/login?returnToUrl={{{returnToUrl}}}">Log In</a>
54+
</div>
55+
</form>
56+
</div>
57+
</body>
58+
</html>

lib/api/authn/webid-oidc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ function middleware (oidc) {
4646

4747
router.get('/register', (req, res) => {
4848
let params = Object.assign({}, req.query, { authParams: url.parse(req.url).query })
49-
res.render('auth/register', params)
49+
res.render('account/register', params)
5050
})
5151

5252
router.get('/goodbye', (req, res) => {

lib/requests/create-account-request.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ class CreateAccountRequest {
3939
* @param res
4040
* @param accountManager {AccountManager}
4141
*
42-
* @throws {TypeError} If required parameters are missing (via
42+
* @throws {Error} If required parameters are missing (via
4343
* `userAccountFrom()`), or it encounters an unsupported authentication
4444
* scheme.
4545
*
4646
* @return {CreateAccountRequest|CreateTlsAccountRequest}
4747
*/
4848
static fromParams (req, res, accountManager) {
4949
if (!req.app || !req.app.locals) {
50-
throw new TypeError('Missing req.app.local params')
50+
throw new Error('Missing req.app.local params')
5151
}
5252

5353
let authMethod = req.app.locals.authMethod
@@ -150,6 +150,11 @@ class CreateAccountRequest {
150150
})
151151
}
152152

153+
error (error) {
154+
// Default error handler, to be overriden in subclasses
155+
throw error
156+
}
157+
153158
/**
154159
* Initializes the session with the newly created user's credentials
155160
*
@@ -185,7 +190,7 @@ class CreateOidcAccountRequest extends CreateAccountRequest {
185190
*/
186191
constructor (options = {}) {
187192
if (!options.password) {
188-
let error = new TypeError('Password required to create an account')
193+
let error = new Error('Password required to create an account')
189194
error.status = 400
190195
throw error
191196
}
@@ -195,6 +200,13 @@ class CreateOidcAccountRequest extends CreateAccountRequest {
195200
this.userStore = options.userStore
196201
}
197202

203+
error (error) {
204+
let res = this.response
205+
let params = Object.assign({}, this.authQueryParams, { error: error.message })
206+
res.statusCode(error.statusCode || 400)
207+
res.render('auth/login', params)
208+
}
209+
198210
/**
199211
* Generate salted password hash, etc.
200212
*

0 commit comments

Comments
 (0)