more security handling

This commit is contained in:
bwssystems
2017-03-28 18:58:33 -05:00
parent c275926117
commit 7442b0d0ca
3 changed files with 37 additions and 5 deletions

View File

@@ -59,11 +59,12 @@ public class SystemControl extends AuthFramework {
// This function sets up the sparkjava rest calls for the hue api
public void setupServer() {
log.info("System control service started....");
before(SYSTEM_CONTEXT + "/*", (req, res) -> {
before(SYSTEM_CONTEXT + "/*", (request, response) -> {
if(bridgeSettings.getBridgeSecurity().isSecure()) {
User authUser = getAuthenticatedUser(req);
User authUser = getAuthenticatedUser(request);
if(authUser == null) {
halt(401, "You are not logged in....");
response.redirect("/login", 301);
// halt(401, "You are not logged in....");
}
}
});
@@ -173,6 +174,7 @@ public class SystemControl extends AuthFramework {
errorMessage = "{\"message\":\"" + errorMessage + "\"}";
} else {
response.status(HttpStatus.SC_OK);
bridgeSettings.getBridgeSecurity().addUser(theUser);
bridgeSettings.save(bridgeSettings.getBridgeSettingsDescriptor());
}

View File

@@ -53,6 +53,9 @@ app.config (function ($locationProvider, $routeProvider) {
}).when ('/lifxdevices', {
templateUrl: 'views/lifxdevice.html',
controller: 'LifxController'
}).when ('/login', {
templateUrl: 'views/login.html',
controller: 'LoginController'
}).otherwise ({
templateUrl: 'views/configuration.html',
controller: 'ViewingController'
@@ -252,6 +255,25 @@ app.service ('bridgeService', function ($http, $base64, ngToast) {
);
};
this.validateUser = function (username, aPassword) {
var newUserInfo = {};
newUserInfo = {
username: username,
password: aPassword
};
var theEncodedPayload = $base64.encode(angular.toJson(newUserInfo));
return $http.post(this.state.systemsbase + "/login", theEncodedPayload ).then(
function (response) {
var theResult = response.data;
self.state.username = theResult.user;
self.displaySuccess("Success!")
},
function (error) {
self.displayWarn("Login Error: ", error);
}
);
};
this.pushLinkButton = function () {
return $http.put(this.state.systemsbase + "/presslinkbutton").then(
function (response) {
@@ -3115,6 +3137,14 @@ app.filter('configuredSomfyDevices', function (bridgeService) {
}
});
app.controller('LoginController', function ($scope, bridgeService) {
$scope.bridge = bridgeService.state;
$scope.login = function(username, password) {
bridgeService.validateUser(username,password);
};
});
app.controller('VersionController', function ($scope, bridgeService) {
$scope.bridge = bridgeService.state;
});

View File

@@ -3,7 +3,7 @@
<h2 class="panel-title">Login</h2>
</div>
<div class="panel-body">
<div class="form-container" ng-controller="LoginController">
<div class="form-container">
<form name="loginForm" role="form">
<legend class="form-label">Enter Credentials</legend>
@@ -17,7 +17,7 @@
class="form-control" type="password" ng-model="password" />
</div>
<div class="form-group">
<button type="button" class="btn btn-success" ng-click="login()">Submit</button>
<button type="button" class="btn btn-success" ng-click="login(username, password)">Submit</button>
</div>
</form>