(1)Rails controller
$ vi app/controllers/users_controller.rb
class UsersController < ApplicationController
before_action :signed_in_user, only: [:update]
private
def signed_in_user
remember_token = User.encrypt(cookies[:remember_token])
current_user ||= User.find_by(remember_token: remember_token)
if current_user.nil?
render status: :unauthorized
end
end
(2)AngularJS controller
$ vi app/assets/javascripts/mymodule.js.erb
myModule.controller("UsersNewCtrl", function($scope, userResource, $location, flashService, $routeParams) {
if ($routeParams.id) {
if (flashService.getUser().user.id > 0 ) {
var msg = "Profile updated";
$scope.title = "Update your profile";
$scope.btn_name = "Save changes";
userResource.show({ id: $routeParams.id }, function(user_info) {
$scope.user = user_info.user;
$scope.gravatar_url = user_info.gravatar_url;
})
} else {
var msg = "Please sign in.";
flashService.push(msg);
$location.path("/signin");
}
} else {
.........
(3)flash message
1)AngularJS template view
$ vi app/assets/templates/sessions/new.html.erb
<div ng-controller="SessionsNewCtrl" class="row">
<div class="col-md-6 col-md-offset-3">
<div class="bg-warning" ng-show="getMessage()">
<p>{{getMessage()}}</p>
</div>
<h1 class="text-center">Sign in</h1>2)AngularJS controller
$ vi app/assets/javascripts/mymodule.js.erb
myModule.controller("SessionsNewCtrl", function($scope, sessionResource,$location,flashService) {
$scope.getMessage = function() {
return flashService.get();
};
});
(4)countermeasure of the browser reload
myModule.controller("UsersNewCtrl", function($scope, userResource, $location, flashService, $routeParams, sessionResource, $q) {
var msg = "";
var qgetUser = function(deferred) {
if (flashService.getUser()) {
var quser_info = flashService.getUser();
deferred.resolve(quser_info);
} else {
sessionResource.current_user({}, function(response) {
if (response.user.id) {
var quser_info = response;
} else {
var quser_info = { user: {id: 0} };
}
flashService.setUser(quser_info);
deferred.resolve(quser_info);
});
}
}
var deferred = $q.defer();
deferred.promise.then(function (result) {
var user_info = result;
if ($routeParams.id) {
if (user_info.user.id > 0) {
msg = "Profile updated";
$scope.title = "Update your profile";
$scope.btn_name = "Save changes";
userResource.show({ id: $routeParams.id }, function(user_info) {
$scope.user = user_info.user;
$scope.gravatar_url = user_info.gravatar_url;
})
} else {
msg = "Please sign in.";
flashService.push(msg);
$location.path("/signin");
}
} else {
msg = "Welcome to the Sample App!";
$scope.title = "Sing up";
$scope.btn_name = "Create my account";
$scope.user = new userResource();
}
},function (reason) {
console.log("qgetUser-Error");
})
qgetUser (deferred);