resty-generators 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/features/generators.feature +67 -0
- data/features/step_definitions/simple_steps.rb +1 -0
- data/lib/generators/resty/base.rb +15 -3
- data/lib/generators/resty/model/model_generator.rb +33 -3
- data/lib/generators/resty/scaffold/scaffold_generator.rb +30 -15
- data/lib/generators/resty/setup/setup_generator.rb +2 -2
- data/lib/generators/resty/setup/setup_generator.rb~ +31 -0
- data/lib/generators/resty/setup/templates/ActivityFactory.java~ +7 -0
- data/lib/generators/resty/setup/templates/ActivityPlace.java +5 -0
- data/lib/generators/resty/setup/templates/ActivityPlace.java~ +8 -0
- data/lib/generators/resty/setup/templates/BreadCrumbsPanel.java +3 -2
- data/lib/generators/resty/setup/templates/BreadCrumbsPanel.java~ +79 -0
- data/lib/generators/resty/setup/templates/GinModule.java~ +7 -0
- data/lib/generators/resty/setup/templates/LoginActivity.java~ +58 -0
- data/lib/generators/resty/setup/templates/LoginPlace.java~ +20 -0
- data/lib/generators/resty/setup/templates/LoginViewImpl.java~ +21 -0
- data/lib/generators/resty/setup/templates/Mavenfile +5 -5
- data/lib/generators/resty/setup/templates/Mavenfile~ +15 -0
- data/lib/generators/resty/setup/templates/MenuPanel.java~ +12 -0
- data/lib/generators/resty/setup/templates/PLaceHistoryMapper.java~ +7 -0
- data/lib/generators/resty/setup/templates/RestfulPlace.java~ +22 -0
- data/lib/generators/resty/setup/templates/SessionActivityPlaceActivityMapper.java~ +71 -0
- data/lib/generators/resty/setup/templates/SessionRestService.java~ +23 -0
- data/lib/generators/resty/setup/templates/User.java +34 -4
- data/lib/generators/resty/setup/templates/authentication.rb +2 -1
- data/lib/generators/resty/setup/templates/authentication.rb~ +4 -0
- data/lib/generators/resty/setup/templates/empty.css~ +1 -0
- data/lib/generators/resty/setup/templates/gwt.css +45 -0
- data/lib/generators/resty/setup/templates/initializer.rb~ +1 -0
- data/lib/generators/resty/setup/templates/monkey_patch.rb~ +27 -0
- data/lib/generators/resty/setup/templates/page.html~ +0 -0
- data/lib/generators/resty/setup/templates/session.rb +18 -36
- data/lib/generators/resty/setup/templates/session.rb~ +45 -0
- data/lib/generators/resty/setup/templates/sessions_controller.rb +27 -8
- data/lib/generators/resty/setup/templates/sessions_controller.rb~ +27 -0
- data/lib/generators/resty/setup/templates/user.rb +38 -6
- data/lib/generators/resty/setup/templates/user.rb~ +27 -0
- data/lib/generators/resty/templates/Activity.java +78 -39
- data/lib/generators/resty/templates/Activity.java~ +67 -0
- data/lib/generators/resty/templates/ActivityPlace.java~ +11 -0
- data/lib/generators/resty/templates/ColumnDefinitionsImpl.java~ +24 -0
- data/lib/generators/resty/templates/ColumnDefintionsImpl.java~ +34 -0
- data/lib/generators/resty/templates/Controller.java~ +49 -0
- data/lib/generators/resty/templates/Editor.java +123 -0
- data/lib/generators/resty/templates/Editor.java~ +84 -0
- data/lib/generators/resty/templates/Editor.ui.xml +41 -0
- data/lib/generators/resty/templates/Editor.ui.xml~ +37 -0
- data/lib/generators/resty/templates/Event.java +30 -0
- data/lib/generators/resty/templates/Event.java~ +31 -0
- data/lib/generators/resty/templates/EventHandler.java +8 -0
- data/lib/generators/resty/templates/EventHandler.java~ +30 -0
- data/lib/generators/resty/templates/Model.java +144 -15
- data/lib/generators/resty/templates/Model.java~ +23 -0
- data/lib/generators/resty/templates/Place.java +1 -1
- data/lib/generators/resty/templates/Place.java~ +21 -0
- data/lib/generators/resty/templates/PlaceTokenizer.java +1 -1
- data/lib/generators/resty/templates/PlaceTokenizer.java~ +19 -0
- data/lib/generators/resty/templates/RestService.java~ +51 -0
- data/lib/generators/resty/templates/View.java +15 -4
- data/lib/generators/resty/templates/View.java~ +23 -0
- data/lib/generators/resty/templates/View.ui.xml +22 -38
- data/lib/generators/resty/templates/View.ui.xml~ +17 -0
- data/lib/generators/resty/templates/ViewImpl.java +88 -103
- data/lib/generators/resty/templates/ViewImpl.java~ +153 -0
- data/lib/resty/abstract_session.rb~ +59 -0
- data/lib/resty/child_path.rb~ +18 -0
- data/lib/resty/session.rb~ +6 -0
- metadata +56 -11
@@ -0,0 +1,20 @@
|
|
1
|
+
package <%= places_package %>;
|
2
|
+
|
3
|
+
import org.dhamma.schedules.client.ActivityPlace;
|
4
|
+
import org.dhamma.schedules.client.managed.ActivityFactory;
|
5
|
+
|
6
|
+
import com.google.gwt.activity.shared.Activity;
|
7
|
+
|
8
|
+
public class LoginPlace extends ActivityPlace {
|
9
|
+
|
10
|
+
public static final LoginPlace LOGIN = new LoginPlace();
|
11
|
+
|
12
|
+
private LoginPlace() {
|
13
|
+
super(null);
|
14
|
+
}
|
15
|
+
|
16
|
+
@Override
|
17
|
+
public Activity create(ActivityFactory factory) {
|
18
|
+
return factory.create(this);
|
19
|
+
}
|
20
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
package <%= views_package %>;
|
2
|
+
|
3
|
+
import com.google.gwt.core.client.GWT;
|
4
|
+
import com.google.gwt.uibinder.client.UiBinder;
|
5
|
+
import com.google.gwt.uibinder.client.UiTemplate;
|
6
|
+
import com.google.gwt.user.client.ui.Widget;
|
7
|
+
import com.google.inject.Singleton;
|
8
|
+
|
9
|
+
@Singleton
|
10
|
+
public class LoginViewImpl extends de.mkristian.gwt.rails.session.LoginViewImpl {
|
11
|
+
|
12
|
+
@UiTemplate("LoginView.ui.xml")
|
13
|
+
interface LoginViewUiBinder extends UiBinder<Widget, de.mkristian.gwt.rails.session.LoginViewImpl> {}
|
14
|
+
|
15
|
+
private static LoginViewUiBinder uiBinder = GWT.create(LoginViewUiBinder.class);
|
16
|
+
|
17
|
+
public LoginViewImpl() {
|
18
|
+
super(uiBinder);
|
19
|
+
}
|
20
|
+
|
21
|
+
}
|
@@ -1,10 +1,12 @@
|
|
1
1
|
#-*- mode: ruby -*-
|
2
|
-
GWT_VERSION = '2.
|
3
|
-
jar('
|
2
|
+
GWT_VERSION = '2.4.0'
|
3
|
+
jar('de.mkristian.gwt:rails-gwt', '0.6.0').scope :provided
|
4
|
+
jar('org.fusesource.restygwt:restygwt', '1.2').scope :provided
|
4
5
|
jar('javax.ws.rs:jsr311-api', '1.1').scope :provided
|
5
6
|
jar('com.google.gwt:gwt-user', GWT_VERSION).scope :provided
|
6
7
|
jar('com.google.gwt.inject:gin', '1.5.0').scope :provided
|
7
|
-
jar('
|
8
|
+
jar('javax.validation:validation-api', '1.0.0.GA').scope :provided
|
9
|
+
jar('javax.validation:validation-api', '1.0.0.GA', 'sources').scope :provided
|
8
10
|
|
9
11
|
plugin('org.codehaus.mojo:gwt-maven-plugin', GWT_VERSION) do |gwt|
|
10
12
|
gwt.with({ :warSourceDirectory => "${basedir}/public",
|
@@ -28,6 +30,4 @@ profile("mac") do |mac|
|
|
28
30
|
mac.activation.os.family "mac"
|
29
31
|
mac.plugin('org.codehaus.mojo:gwt-maven-plugin').with(:extraJvmArgs => "-d32 -XstartOnFirstThread -Xmx512m")
|
30
32
|
end
|
31
|
-
|
32
|
-
repository(:snapshots).url "http://mojo.saumya.de"
|
33
33
|
# vim: syntax=Ruby
|
@@ -0,0 +1,15 @@
|
|
1
|
+
plugin('org.codehaus.mojo.gwt-maven-plugin', '2.1.0') do |gwt|
|
2
|
+
gwt.with({ :logLevel => "INFO",
|
3
|
+
:style => "DETAILED",
|
4
|
+
:treeLogger => true,
|
5
|
+
:extraJvmArgs => "-Xmx512m",
|
6
|
+
:runTarget => "<%= application_name.underscore %>/<%= application_name.underscore %>.html",
|
7
|
+
:includes => "**/<%= application_name %>GWTTestSuite.java"
|
8
|
+
})
|
9
|
+
gwt.execute.goals << ["clean", "compile", "test"]
|
10
|
+
end
|
11
|
+
#-- Macs need the -d32 -XstartOnFirstThread jvm options -->
|
12
|
+
profile("mac") do |mac|
|
13
|
+
mac.activation << "<os><family>mac</family></os>"
|
14
|
+
plugin('org.codehaus.mojo.gwt-maven-plugin').with(:extraJvmArgs => "-d32 -XstartOnFirstThread -Xmx512m")
|
15
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
package <%= managed_package %>;
|
2
|
+
|
3
|
+
import javax.inject.Inject;
|
4
|
+
|
5
|
+
import <%= gwt_rails_package %>.places.RestfulPlaceHistoryMapper;
|
6
|
+
|
7
|
+
public class <%= application_name %>PlaceHistoryMapper extends RestfulPlaceHistoryMapper {
|
8
|
+
|
9
|
+
@Inject
|
10
|
+
public <%= application_name %>PlaceHistoryMapper(){
|
11
|
+
}
|
12
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
package <%= managed_package %>;
|
2
|
+
|
3
|
+
public abstract class RestfulPlace<T> extends ActivityPlace {
|
4
|
+
|
5
|
+
public final RestfulAction action;
|
6
|
+
|
7
|
+
private T resource;
|
8
|
+
|
9
|
+
public RestfulPlace(RestfulAction restfulActionEnum) {
|
10
|
+
this.action = restfulActionEnum;
|
11
|
+
}
|
12
|
+
|
13
|
+
public void setResource(T resource) {
|
14
|
+
if (this.resource == null) {
|
15
|
+
this.resource = resource;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
public T getResource() {
|
20
|
+
return resource;
|
21
|
+
}
|
22
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
package org.dhamma.schedules.client;
|
2
|
+
|
3
|
+
import javax.inject.Inject;
|
4
|
+
|
5
|
+
import org.dhamma.schedules.client.managed.ActivityFactory;
|
6
|
+
import org.dhamma.schedules.client.models.User;
|
7
|
+
import org.dhamma.schedules.client.places.LoginPlace;
|
8
|
+
|
9
|
+
import com.google.gwt.activity.shared.Activity;
|
10
|
+
import com.google.gwt.place.shared.Place;
|
11
|
+
|
12
|
+
import de.mkristian.gwt.rails.Notice;
|
13
|
+
import de.mkristian.gwt.rails.RestfulPlace;
|
14
|
+
import de.mkristian.gwt.rails.session.NeedsAuthorization;
|
15
|
+
import de.mkristian.gwt.rails.session.NoAuthorization;
|
16
|
+
import de.mkristian.gwt.rails.session.SessionManager;
|
17
|
+
|
18
|
+
public class SessionActivityPlaceActivityMapper extends ActivityPlaceActivityMapper {
|
19
|
+
|
20
|
+
private final SessionManager<User> manager;
|
21
|
+
|
22
|
+
@Inject
|
23
|
+
public SessionActivityPlaceActivityMapper(ActivityFactory factory, SessionManager<User> manager, Notice notice) {
|
24
|
+
super(factory, notice);
|
25
|
+
this.manager = manager;
|
26
|
+
}
|
27
|
+
|
28
|
+
public Activity getActivity(Place place) {
|
29
|
+
return pessimisticGetActivity(place);
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* pessimistic in the sense that default is authorisation, only the places
|
34
|
+
* which implements {@link NoAuthorization} will be omitted by the check.
|
35
|
+
*/
|
36
|
+
protected Activity pessimisticGetActivity(Place place) {
|
37
|
+
if (!(place instanceof NoAuthorization)) {
|
38
|
+
if(manager.isActive()){
|
39
|
+
if(!manager.isAllowed((RestfulPlace)place)){
|
40
|
+
notice.setText("nothing to see");
|
41
|
+
return null;
|
42
|
+
}
|
43
|
+
//TODO move into dispatch filter
|
44
|
+
manager.resetTimer();
|
45
|
+
}
|
46
|
+
else {
|
47
|
+
return LoginPlace.LOGIN.create(factory);
|
48
|
+
}
|
49
|
+
}
|
50
|
+
return super.getActivity(place);
|
51
|
+
}
|
52
|
+
|
53
|
+
/**
|
54
|
+
* optimistic in the sense that default is no authorisation, only the places
|
55
|
+
* which implements {@link NeedsAuthorization} will be checked.
|
56
|
+
*/
|
57
|
+
protected Activity optimisticGetActivity(Place place) {
|
58
|
+
if (place instanceof NeedsAuthorization) {
|
59
|
+
if(manager.isActive()){
|
60
|
+
if(!manager.isAllowed((RestfulPlace)place)){
|
61
|
+
notice.setText("nothing to see");
|
62
|
+
return null;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
else {
|
66
|
+
return LoginPlace.LOGIN.create(factory);
|
67
|
+
}
|
68
|
+
}
|
69
|
+
return super.getActivity(place);
|
70
|
+
}
|
71
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
package <%= restservices_package %>;
|
2
|
+
|
3
|
+
import javax.ws.rs.DELETE;
|
4
|
+
import javax.ws.rs.POST;
|
5
|
+
import javax.ws.rs.Path;
|
6
|
+
|
7
|
+
import <%= models_package %>.User;
|
8
|
+
|
9
|
+
import org.fusesource.restygwt.client.MethodCallback;
|
10
|
+
import org.fusesource.restygwt.client.RestService;
|
11
|
+
|
12
|
+
import de.mkristian.gwt.rails.session.Authentication;
|
13
|
+
import de.mkristian.gwt.rails.session.Session;
|
14
|
+
|
15
|
+
@Path("/session")
|
16
|
+
public interface SessionRestService extends RestService {
|
17
|
+
|
18
|
+
@POST
|
19
|
+
void create(Authentication authentication, MethodCallback<Session<User>> callback);
|
20
|
+
|
21
|
+
@DELETE
|
22
|
+
void destroy(MethodCallback<Void> callback);
|
23
|
+
}
|
@@ -1,12 +1,42 @@
|
|
1
1
|
package <%= models_package %>;
|
2
2
|
|
3
|
+
import org.codehaus.jackson.annotate.JsonCreator;
|
4
|
+
import org.codehaus.jackson.annotate.JsonProperty;
|
5
|
+
|
3
6
|
import org.fusesource.restygwt.client.Json;
|
4
7
|
import org.fusesource.restygwt.client.Json.Style;
|
5
8
|
|
9
|
+
import <%= gwt_rails_package %>.models.IsUser;
|
10
|
+
|
6
11
|
@Json(style = Style.RAILS)
|
7
|
-
public class User {
|
12
|
+
public class User implements IsUser {
|
13
|
+
|
14
|
+
private String login;
|
15
|
+
|
16
|
+
private String name;
|
17
|
+
|
18
|
+
@JsonCreator
|
19
|
+
public User(@JsonProperty("login") String login,
|
20
|
+
@JsonProperty("name") String name){
|
21
|
+
this.login = login;
|
22
|
+
this.name = name;
|
23
|
+
}
|
24
|
+
|
25
|
+
public String getLogin(){
|
26
|
+
return login;
|
27
|
+
}
|
28
|
+
|
29
|
+
public String getName(){
|
30
|
+
return name;
|
31
|
+
}
|
32
|
+
|
33
|
+
public int hashCode(){
|
34
|
+
return login.hashCode();
|
35
|
+
}
|
8
36
|
|
9
|
-
|
37
|
+
public boolean equals(Object other){
|
38
|
+
return (other instanceof User) &&
|
39
|
+
((User)other).login == login;
|
40
|
+
}
|
10
41
|
|
11
|
-
|
12
|
-
}
|
42
|
+
}
|
@@ -1,3 +1,4 @@
|
|
1
1
|
class Authentication < ActiveResource::Base
|
2
|
-
self.site = Rails.application.config.remote_sso_url
|
2
|
+
self.site = Rails.application.config.respond_to?(:remote_sso_url) ? Rails.application.config.remote_sso_url : "http://localhost:3000"
|
3
|
+
self.headers['X-SERVICE-TOKEN'] = Rails.application.config.respond_to?(:remote_sso_token) ? Rails.application.config.remote_sso_token : 'be happy'
|
3
4
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -15,3 +15,48 @@
|
|
15
15
|
top:3em;
|
16
16
|
opacity:.9;
|
17
17
|
}
|
18
|
+
.gwt-rails-breadcrumbs *
|
19
|
+
{
|
20
|
+
float: right;
|
21
|
+
display: inline;
|
22
|
+
}
|
23
|
+
.gwt-rails-breadcrumbs *
|
24
|
+
{
|
25
|
+
margin-left: 1em;
|
26
|
+
}
|
27
|
+
.gwt-rails-menu *
|
28
|
+
{
|
29
|
+
float: left;
|
30
|
+
display: inline;
|
31
|
+
}
|
32
|
+
.gwt-rails-display, .gwt-rails-model-signature, .gwt-rails-model-fields
|
33
|
+
{
|
34
|
+
clear: both;
|
35
|
+
}
|
36
|
+
.gwt-rails-model-signature *
|
37
|
+
{
|
38
|
+
font-size: 0.7em;
|
39
|
+
float: left;
|
40
|
+
display: inline;
|
41
|
+
margin-right: .3em;
|
42
|
+
}
|
43
|
+
.gwt-rails-model-signature span
|
44
|
+
{
|
45
|
+
margin-right: 1em;
|
46
|
+
}
|
47
|
+
.gwt-rails-model-fields > div > *
|
48
|
+
{
|
49
|
+
display: block;
|
50
|
+
}
|
51
|
+
.gwt-rails-model-signature, .gwt-rails-buttons, .gwt-rails-display
|
52
|
+
{
|
53
|
+
margin-top: .3em;
|
54
|
+
}
|
55
|
+
.gwt-rails-model-fields .gwt-TextBox, .gwt-rails-model-fields .gwt-TextArea
|
56
|
+
{
|
57
|
+
width: 30%;
|
58
|
+
}
|
59
|
+
.gwt-rails-model-fields .gwt-TextArea
|
60
|
+
{
|
61
|
+
height: 6em;
|
62
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
Rails.application.config.middleware.use Resty::ChildPath <%= application_name.under_score %>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'action_dispatch/http/request'
|
2
|
+
require 'active_support/core_ext/hash/indifferent_access'
|
3
|
+
|
4
|
+
module ActionDispatch
|
5
|
+
class ParamsParser
|
6
|
+
|
7
|
+
alias :call_old :call
|
8
|
+
def call(env)
|
9
|
+
request = Request.new(env)
|
10
|
+
mime_type = content_type_from_legacy_post_data_format_header(env) ||
|
11
|
+
request.content_mime_type
|
12
|
+
|
13
|
+
case mime_type
|
14
|
+
when Mime::JSON
|
15
|
+
data = ActiveSupport::JSON.decode(request.body)
|
16
|
+
request.body.rewind if request.body.respond_to?(:rewind)
|
17
|
+
data = {:_json => data} unless data.is_a?(Hash)
|
18
|
+
env["action_dispatch.request.request_parameters"] = {:json => data}.with_indifferent_access
|
19
|
+
|
20
|
+
@app.call(env)
|
21
|
+
else
|
22
|
+
call_old(env)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
#TODO under_score the keys and use :<controller-name> instead of generic :json and put the whole thing into resty-generators
|
File without changes
|
@@ -1,43 +1,25 @@
|
|
1
|
-
|
1
|
+
require 'ixtlan/guard/abstract_session'
|
2
|
+
|
3
|
+
class Session < Ixtlan::Guard::AbstractSession
|
2
4
|
include ActiveModel::Serializers::JSON
|
3
5
|
include ActiveModel::Serializers::Xml
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
def self.create(params = {})
|
8
|
-
if Rails.application.config.respond_to? :remote_sso_url
|
9
|
-
begin
|
10
|
-
a = Authentication.create(:login => params[:login],
|
11
|
-
:password => params[:password])
|
12
|
-
result = new
|
13
|
-
user = User.new
|
14
|
-
user.login = a.login
|
15
|
-
user.name = a.name
|
16
|
-
user.groups = a.groups
|
17
|
-
result.user = user
|
18
|
-
result
|
19
|
-
rescue ActiveResource::ResourceNotFound
|
20
|
-
nil
|
21
|
-
end
|
22
|
-
else
|
23
|
-
user = User.authenticate(params[:login], params[:password])
|
24
|
-
if user
|
25
|
-
result = new
|
26
|
-
result.user = user
|
27
|
-
result
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def idle_session_timeout
|
33
|
-
Rails.application.config.idle_session_timeout
|
34
|
-
end
|
35
|
-
|
36
|
-
def attributes
|
37
|
-
{'idle_session_timeout' => idle_session_timeout, 'permissions' => permissions, 'user' => user}
|
7
|
+
def self.authenticate(login, password)
|
8
|
+
User.authenticate(login, password)
|
38
9
|
end
|
39
10
|
|
40
|
-
def
|
41
|
-
|
11
|
+
def self.authenticate_remote(login, password)
|
12
|
+
begin
|
13
|
+
auth = Authentication.create(:login => login, :password => password)
|
14
|
+
user = User.new
|
15
|
+
user.login = auth.login
|
16
|
+
user.name = auth.name
|
17
|
+
user.groups = auth.groups
|
18
|
+
user
|
19
|
+
rescue ActiveResource::ResourceNotFound
|
20
|
+
result = User.new
|
21
|
+
result.log = "access denied #{login}" # error message
|
22
|
+
result
|
23
|
+
end
|
42
24
|
end
|
43
25
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class Session
|
2
|
+
include ActiveModel::Serializers::JSON
|
3
|
+
include ActiveModel::Serializers::Xml
|
4
|
+
|
5
|
+
attr_accessor :permissions, :user
|
6
|
+
|
7
|
+
def self.create(params = {})
|
8
|
+
if Rails.application.config.respond_to? :remote_sso_url
|
9
|
+
begin
|
10
|
+
a = Authentication.create(:login => params[:login],
|
11
|
+
:password => params[:password])
|
12
|
+
result = new
|
13
|
+
user = User.new
|
14
|
+
user.login = a.login
|
15
|
+
user.name = a.name
|
16
|
+
user.groups = a.groups
|
17
|
+
result.user = user
|
18
|
+
result
|
19
|
+
rescue ActiveResource::ResourceNotFound
|
20
|
+
nil
|
21
|
+
end
|
22
|
+
else
|
23
|
+
user = User.authenticate(params[:login], params[:password])
|
24
|
+
if user
|
25
|
+
result = new
|
26
|
+
result.user = user
|
27
|
+
result
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def idle_session_timeout
|
33
|
+
Configuration.instance.idle_session_timeout
|
34
|
+
end
|
35
|
+
|
36
|
+
def attributes
|
37
|
+
{'idle_session_timeout' => idle_session_timeout, 'permissions' => permissions, 'user' => user}
|
38
|
+
end
|
39
|
+
|
40
|
+
def id
|
41
|
+
""
|
42
|
+
end
|
43
|
+
end
|
44
|
+
Session.include_root_in_json = false
|
45
|
+
Session
|