From bbf04c4687a1a73d6bd691b94bd8ca23654b83c8 Mon Sep 17 00:00:00 2001 From: Athou Date: Sat, 9 Aug 2014 16:07:24 +0200 Subject: [PATCH] welcome page --- bower.json | 2 +- gulpfile.js | 17 +++- src/main/app/js/controllers.js | 29 +++++++ src/main/app/js/main.js | 4 +- src/main/app/js/services.js | 7 ++ src/main/app/templates/welcome.html | 83 ++++++++++++++++++- .../backend/service/UserService.java | 2 +- .../commafeed/frontend/model/ServerInfo.java | 1 + .../frontend/resource/ServerREST.java | 3 +- .../commafeed/frontend/resource/UserREST.java | 4 +- 10 files changed, 139 insertions(+), 13 deletions(-) diff --git a/bower.json b/bower.json index 811c83fd..163fa3ef 100644 --- a/bower.json +++ b/bower.json @@ -18,7 +18,7 @@ "angular-ui-utils": "0.1.0", "angular-ui-select2": "0.0.5", "angular-bootstrap": "0.2.0", - "angular-loading-bar": "0.4.0", + "angular-loading-bar": "0.5.0", "ngInfiniteScroll": "1.0.0", "ng-grid": "2.0.6", "mousetrap": "1.4.6", diff --git a/gulpfile.js b/gulpfile.js index f6cb383b..dae90a4e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -47,6 +47,16 @@ gulp.task('template-cache', function() { return gulp.src(SRC_DIR + 'templates/**/*.html').pipe(templateCache(options)).pipe(gulp.dest(TEMP_DIR + 'js')); }); +gulp.task('build-dev', ['images', 'favicons', 'sass', 'fonts', 'template-cache', 'bower'], function() { + var assets = useref.assets({ + searchPath : [SRC_DIR, TEMP_DIR] + }); + var jsFilter = filter("**/*.js"); + var cssFilter = filter("**/*.css"); + return gulp.src([SRC_DIR + 'index.html', TEMP_DIR + 'app.css']).pipe(assets).pipe(assets.restore()).pipe(useref()).pipe( + gulp.dest(BUILD_DIR)); +}); + gulp.task('build', ['images', 'favicons', 'sass', 'fonts', 'template-cache', 'bower'], function() { var assets = useref.assets({ searchPath : [SRC_DIR, TEMP_DIR] @@ -63,8 +73,9 @@ gulp.task('build', ['images', 'favicons', 'sass', 'fonts', 'template-cache', 'bo }); gulp.task('watch', function() { - gulp.watch(SRC_DIR + 'sass/**/*.scss', ['build']); - gulp.watch(SRC_DIR + 'js/**/*.js', ['build']); + gulp.watch(SRC_DIR + 'sass/**/*.scss', ['build-dev']); + gulp.watch(SRC_DIR + 'js/**/*.js', ['build-dev']); + gulp.watch(SRC_DIR + 'templates/**/*.html', ['build-dev']); }); gulp.task('serve', function() { @@ -80,5 +91,5 @@ gulp.task('serve', function() { }); }); -gulp.task('dev', ['build', 'watch', 'serve']); +gulp.task('dev', ['build-dev', 'watch', 'serve']); gulp.task('default', ['build']); \ No newline at end of file diff --git a/src/main/app/js/controllers.js b/src/main/app/js/controllers.js index f7224f44..21b1b7eb 100644 --- a/src/main/app/js/controllers.js +++ b/src/main/app/js/controllers.js @@ -1454,3 +1454,32 @@ module.controller('FooterController', ['$scope', '$sce', function($scope, $sce) module.controller('MetricsCtrl', ['$scope', 'AdminMetricsService', function($scope, AdminMetricsService) { $scope.metrics = AdminMetricsService.get(); }]); + +module.controller('WelcomeCtrl', ['$scope', '$location', 'SessionService', 'ServerService', function($scope, $location, SessionService, ServerService) { + $scope.ServerService = ServerService.get(); + $scope.model = {}; + + var login = function(model) { + var success = function(data) { + $location.path('/'); + $scope.$emit('emitReload'); + }; + var error = function(data) { + $scope.message = data.data; + }; + SessionService.login({ + name : model.name, + password : model.password + }, success, error); + } + $scope.demoLogin = function() { + login({ + name : 'demo', + password : 'demo' + }); + }; + + $scope.login = function() { + login($scope.model); + }; +}]); diff --git a/src/main/app/js/main.js b/src/main/app/js/main.js index 3afde3d0..10a6ee4d 100644 --- a/src/main/app/js/main.js +++ b/src/main/app/js/main.js @@ -17,10 +17,8 @@ app.config(['$routeProvider', '$stateProvider', '$urlRouterProvider', '$httpProv var status = response.status; if (status == 401) { $injector.get('$state').transitionTo('welcome'); - return; - } else { - return $q.reject(response); } + return $q.reject(response); }; var promise = function(promise) { diff --git a/src/main/app/js/services.js b/src/main/app/js/services.js index 63c8f982..19b53e57 100644 --- a/src/main/app/js/services.js +++ b/src/main/app/js/services.js @@ -32,6 +32,13 @@ module.factory('ProfileService', ['$resource', function($resource) { return res; }]); +module.factory('SessionService', ['$resource', function($resource) { + var res = {}; + res.login = $resource('rest/user/login').save; + res.register = $resource('rest/user/register').save; + return res; +}]); + module.factory('SettingsService', ['$resource', function($resource) { var res = $resource('rest/user/settings'); diff --git a/src/main/app/templates/welcome.html b/src/main/app/templates/welcome.html index 1ee2e69a..aed0fe88 100644 --- a/src/main/app/templates/welcome.html +++ b/src/main/app/templates/welcome.html @@ -1,3 +1,82 @@ +
-
-
\ No newline at end of file +
+
+ + + +
+
Bloat-free feed reader
+ +
+
+
+
+

Login

+ +
+
+ + +
+
+ + +
+ +
+
+
+
+
+

Register

+ +
+
+
+ +
+ + diff --git a/src/main/java/com/commafeed/backend/service/UserService.java b/src/main/java/com/commafeed/backend/service/UserService.java index 83469bb5..49a38e0f 100644 --- a/src/main/java/com/commafeed/backend/service/UserService.java +++ b/src/main/java/com/commafeed/backend/service/UserService.java @@ -33,7 +33,7 @@ public class UserService { public Optional login(String name, String password) { if (name == null || password == null) { - return null; + return Optional.absent(); } User user = userDAO.findByName(name); diff --git a/src/main/java/com/commafeed/frontend/model/ServerInfo.java b/src/main/java/com/commafeed/frontend/model/ServerInfo.java index 4be01543..39ba4206 100644 --- a/src/main/java/com/commafeed/frontend/model/ServerInfo.java +++ b/src/main/java/com/commafeed/frontend/model/ServerInfo.java @@ -14,5 +14,6 @@ public class ServerInfo implements Serializable { private String announcement; private String version; private String gitCommit; + private boolean allowRegistrations; } diff --git a/src/main/java/com/commafeed/frontend/resource/ServerREST.java b/src/main/java/com/commafeed/frontend/resource/ServerREST.java index 47310049..a78d25b4 100644 --- a/src/main/java/com/commafeed/frontend/resource/ServerREST.java +++ b/src/main/java/com/commafeed/frontend/resource/ServerREST.java @@ -39,11 +39,12 @@ public class ServerREST { @GET @UnitOfWork @ApiOperation(value = "Get server infos", notes = "Get server infos", response = ServerInfo.class) - public Response get(@SecurityCheck User user) { + public Response get() { ServerInfo infos = new ServerInfo(); infos.setAnnouncement(config.getApplicationSettings().getAnnouncement()); infos.setVersion(applicationPropertiesService.getVersion()); infos.setGitCommit(applicationPropertiesService.getGitCommit()); + infos.setAllowRegistrations(config.getApplicationSettings().isAllowRegistrations()); return Response.ok(infos).build(); } diff --git a/src/main/java/com/commafeed/frontend/resource/UserREST.java b/src/main/java/com/commafeed/frontend/resource/UserREST.java index f9856b05..d0f55268 100644 --- a/src/main/java/com/commafeed/frontend/resource/UserREST.java +++ b/src/main/java/com/commafeed/frontend/resource/UserREST.java @@ -216,10 +216,10 @@ public class UserREST { public Response login(@ApiParam(required = true) LoginRequest req, @Session HttpSession session) { Optional user = userService.login(req.getName(), req.getPassword()); if (user.isPresent()) { - session.setAttribute(CommaFeedApplication.SESSION_USER, user); + session.setAttribute(CommaFeedApplication.SESSION_USER, user.get()); return Response.ok().build(); } else { - return Response.status(Response.Status.UNAUTHORIZED).build(); + return Response.status(Response.Status.UNAUTHORIZED).entity("wrong username or password").build(); } }