mirror of
https://github.com/bwssytems/ha-bridge.git
synced 2025-12-16 18:24:36 +00:00
more security handling
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user