preserve existing user
This commit is contained in:
parent
a36b191650
commit
013c77aba2
5 changed files with 37 additions and 8 deletions
|
@ -0,0 +1,8 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="preserve existing user in callback_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" singleton="true" nameIsGenerated="true">
|
||||
<option name="filePath" value="$PROJECT_DIR$/test/callback_test.dart" />
|
||||
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||
<option name="testName" value="preserve existing user" />
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
|
@ -1,3 +1,6 @@
|
|||
# 1.1.1+3
|
||||
* `authenticate` returns the current user, if one is present.
|
||||
|
||||
# 1.1.1+2
|
||||
* `_apply` now always sends a `token` cookie.
|
||||
|
||||
|
|
|
@ -262,7 +262,11 @@ class AngelAuth<T> {
|
|||
(AuthStrategy x) => x.name == name,
|
||||
orElse: () =>
|
||||
throw new ArgumentError('No strategy "$name" found.'));
|
||||
var result = await strategy.authenticate(req, res, options);
|
||||
|
||||
var hasExisting = req.properties.containsKey('user');
|
||||
var result = hasExisting
|
||||
? req.properties['user']
|
||||
: await strategy.authenticate(req, res, options);
|
||||
if (result == true)
|
||||
return result;
|
||||
else if (result != false) {
|
||||
|
@ -292,11 +296,10 @@ class AngelAuth<T> {
|
|||
res.redirect(options.successRedirect, code: HttpStatus.OK);
|
||||
return false;
|
||||
} else if (options?.canRespondWithJson != false &&
|
||||
req.headers.value("accept") != null &&
|
||||
(req.headers.value("accept").contains("application/json") ||
|
||||
req.headers.value("accept").contains("*/*") ||
|
||||
req.headers.value("accept").contains("application/*"))) {
|
||||
var user = await deserializer(await serializer(result as T));
|
||||
req.accepts('application/json')) {
|
||||
var user = hasExisting
|
||||
? result as T
|
||||
: await deserializer(await serializer(result as T));
|
||||
_onLogin.add(user);
|
||||
return {"data": user, "token": jwt};
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
name: angel_auth
|
||||
description: A complete authentication plugin for Angel.
|
||||
version: 1.1.1+2
|
||||
version: 1.1.1+3
|
||||
author: Tobe O <thosakwe@gmail.com>
|
||||
homepage: https://github.com/angel-dart/angel_auth
|
||||
environment:
|
||||
|
|
|
@ -2,6 +2,7 @@ import 'dart:io';
|
|||
import 'package:angel_auth/angel_auth.dart';
|
||||
import 'package:angel_framework/angel_framework.dart';
|
||||
import 'package:angel_framework/common.dart';
|
||||
import 'package:dart2_constant/convert.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:test/test.dart';
|
||||
|
||||
|
@ -24,7 +25,7 @@ main() {
|
|||
angelHttp = new AngelHttp(app, useZone: false);
|
||||
app.use('/users', new TypedService<User>(new MapService()));
|
||||
|
||||
await app
|
||||
User jdoe = await app
|
||||
.service('users')
|
||||
.create({'username': 'jdoe1', 'password': 'password'});
|
||||
|
||||
|
@ -53,6 +54,12 @@ main() {
|
|||
..end();
|
||||
})));
|
||||
|
||||
app.chain((RequestContext req) {
|
||||
req.properties['user'] =
|
||||
new User(username: req.params['name']?.toString());
|
||||
return true;
|
||||
}).post('/existing/:name', auth.authenticate('local'));
|
||||
|
||||
client = new http.Client();
|
||||
server = await angelHttp.startServer();
|
||||
url = 'http://${server.address.address}:${server.port}';
|
||||
|
@ -72,4 +79,12 @@ main() {
|
|||
print('Response: ${response.body}');
|
||||
expect(response.body, equals('Hello!'));
|
||||
});
|
||||
|
||||
test('preserve existing user', () async {
|
||||
final response = await client.post('$url/existing/foo',
|
||||
body: {'username': 'jdoe1', 'password': 'password'},
|
||||
headers: {'accept': 'application/json'});
|
||||
print('Response: ${response.body}');
|
||||
expect(json.decode(response.body)['data']['username'], equals('foo'));
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue