onlinegames_info_connect 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +34 -0
  5. data/app/assets/images/onlinegames_info_connect/ogi_small_logo.png +0 -0
  6. data/app/assets/javascripts/onlinegames_info_connect/utils.js.coffee +35 -0
  7. data/app/controllers/application_controller.rb +2 -0
  8. data/app/controllers/control_center/languages_controller.rb +90 -0
  9. data/app/controllers/control_center/user_roles_controller.rb +88 -0
  10. data/app/controllers/control_center/users_controller.rb +103 -0
  11. data/app/controllers/session_controller.rb +113 -0
  12. data/app/helpers/application_helper.rb +2 -0
  13. data/app/helpers/session_helper.rb +2 -0
  14. data/app/models/base_user.rb +54 -0
  15. data/app/models/language.rb +3 -0
  16. data/app/models/user_event.rb +16 -0
  17. data/app/models/user_role.rb +4 -0
  18. data/app/views/control_center/dashboard.html.erb +5 -0
  19. data/app/views/control_center/languages/_form.html.erb +25 -0
  20. data/app/views/control_center/languages/edit.html.erb +6 -0
  21. data/app/views/control_center/languages/index.html.erb +22 -0
  22. data/app/views/control_center/languages/new.html.erb +5 -0
  23. data/app/views/control_center/languages/show.html.erb +13 -0
  24. data/app/views/control_center/user_roles/_form.html.erb +25 -0
  25. data/app/views/control_center/user_roles/edit.html.erb +6 -0
  26. data/app/views/control_center/user_roles/index.html.erb +25 -0
  27. data/app/views/control_center/user_roles/new.html.erb +5 -0
  28. data/app/views/control_center/user_roles/show.html.erb +15 -0
  29. data/app/views/control_center/users/_form.html.erb +14 -0
  30. data/app/views/control_center/users/edit.html.erb +6 -0
  31. data/app/views/control_center/users/index.html.erb +56 -0
  32. data/app/views/control_center/users/show.html.erb +95 -0
  33. data/app/views/layouts/admin.html.erb +45 -0
  34. data/app/views/layouts/none.html.erb +1 -0
  35. data/app/views/layouts/simple.html.erb +5 -0
  36. data/app/views/session/_signup.html.erb +31 -0
  37. data/app/views/session/index.html.erb +4 -0
  38. data/config/routes.rb +23 -0
  39. data/db/migrate/20100604210033_create_users.rb +87 -0
  40. data/db/migrate/20100604222947_create_languages.rb +13 -0
  41. data/db/migrate/20100607191655_create_guilds.rb +26 -0
  42. data/db/migrate/20100612173309_create_user_roles.rb +14 -0
  43. data/lib/onlinegames_info_connect.rb +4 -0
  44. data/lib/onlinegames_info_connect/authenticated_system.rb +91 -0
  45. data/lib/onlinegames_info_connect/engine.rb +14 -0
  46. data/lib/onlinegames_info_connect/oauth_friends.rb +24 -0
  47. data/lib/onlinegames_info_connect/oauth_guild.rb +19 -0
  48. data/lib/onlinegames_info_connect/oauth_medals.rb +11 -0
  49. data/lib/onlinegames_info_connect/oauth_messages.rb +21 -0
  50. data/lib/onlinegames_info_connect/oauth_premium.rb +43 -0
  51. data/lib/onlinegames_info_connect/oauth_users.rb +11 -0
  52. data/lib/onlinegames_info_connect/ogi_oauth.rb +35 -0
  53. data/lib/onlinegames_info_connect/ogi_token_api.rb +49 -0
  54. data/lib/onlinegames_info_connect/test_helper.rb +7 -0
  55. data/lib/onlinegames_info_connect/version.rb +3 -0
  56. data/lib/tasks/onlinegames_info_connect_tasks.rake +4 -0
  57. data/test/dummy/README.rdoc +28 -0
  58. data/test/dummy/Rakefile +6 -0
  59. data/test/dummy/app/assets/javascripts/application.js +13 -0
  60. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  61. data/test/dummy/app/controllers/application_controller.rb +5 -0
  62. data/test/dummy/app/helpers/application_helper.rb +2 -0
  63. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  64. data/test/dummy/bin/bundle +3 -0
  65. data/test/dummy/bin/rails +4 -0
  66. data/test/dummy/bin/rake +4 -0
  67. data/test/dummy/config.ru +4 -0
  68. data/test/dummy/config/application.rb +23 -0
  69. data/test/dummy/config/boot.rb +5 -0
  70. data/test/dummy/config/database.yml +25 -0
  71. data/test/dummy/config/environment.rb +5 -0
  72. data/test/dummy/config/environments/development.rb +29 -0
  73. data/test/dummy/config/environments/production.rb +80 -0
  74. data/test/dummy/config/environments/test.rb +36 -0
  75. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  76. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  77. data/test/dummy/config/initializers/inflections.rb +16 -0
  78. data/test/dummy/config/initializers/mime_types.rb +5 -0
  79. data/test/dummy/config/initializers/secret_token.rb +12 -0
  80. data/test/dummy/config/initializers/session_store.rb +3 -0
  81. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  82. data/test/dummy/config/locales/en.yml +23 -0
  83. data/test/dummy/config/routes.rb +49 -0
  84. data/test/dummy/db/test.sqlite3 +0 -0
  85. data/test/dummy/log/test.log +5 -0
  86. data/test/dummy/public/404.html +58 -0
  87. data/test/dummy/public/422.html +58 -0
  88. data/test/dummy/public/500.html +57 -0
  89. data/test/dummy/public/favicon.ico +0 -0
  90. data/test/integration/navigation_test.rb +10 -0
  91. data/test/oauth_mock.rb +167 -0
  92. data/test/onlinegames_info_connect_test.rb +7 -0
  93. data/test/test_helper.rb +15 -0
  94. metadata +214 -0
@@ -0,0 +1,45 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Admin</title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <link href="/admin/admin.css" media="screen" rel="stylesheet" type="text/css" />
7
+ <%= javascript_include_tag 'application' %>
8
+ <%= csrf_meta_tag %>
9
+ </head>
10
+
11
+ <body>
12
+ <div id="main">
13
+ <div id="menu">
14
+ <ul>
15
+ <li><%= link_to 'Users', control_center_users_path(), {:class => (controller.controller_name == 'users')?'selected':''} %></li>
16
+ <li><%= link_to 'User Roles', control_center_user_roles_path(), {:class => (controller.controller_name == 'user_roles')?'selected':''} %></li>
17
+ <li><%= link_to 'Languages', control_center_languages_url(), {:class => (controller.controller_name == 'languages')?'selected':''} %></li>
18
+ <li style="text-align: center;">------------------------------</li>
19
+ <%= render :partial => 'layouts/admin_menu' %>
20
+ <li><%= link_to 'Logout', logout_path %></li>
21
+ </ul>
22
+ </div>
23
+ <div id="content">
24
+ <% for name in [:notice, :warning, :message] %>
25
+ <% if flash[name] %>
26
+ <div id="flash_msg">
27
+ <b><%= t("notice") %></b>
28
+ <div id="<%= name %>">
29
+ <div><%= flash[name] %></div>
30
+ </div>
31
+ </div>
32
+ <% end %>
33
+ <% end %>
34
+
35
+ <%= yield %>
36
+ </div>
37
+
38
+ <div style="clear: both;"></div>
39
+
40
+ <div id="footer">
41
+ <div id="copy_r"><a href="http://www.odania-it.de" target="_blank">Copyright by Mike Petersen Odania IT</a></div>
42
+ </div>
43
+ </div>
44
+ </body>
45
+ </html>
@@ -0,0 +1 @@
1
+ <%= yield %>
@@ -0,0 +1,5 @@
1
+ <html>
2
+ <body style="background-color: white; color: black;">
3
+ <%= yield %>
4
+ </body>
5
+ </html>
@@ -0,0 +1,31 @@
1
+ <div class="box" style="width: 50%; float: left;">
2
+ <h1><%= t 'Register' %></h1>
3
+
4
+ <%= t "Registration is free" %>
5
+
6
+ <% if 'development'.include?(Rails.env) %>
7
+ <%= simple_form_for(@user, :url => user_path) do |f| %>
8
+ <%= f.input :name, :input_html => {:size => 20} %>
9
+ <%= f.input :email, :input_html => {:size => 20} %>
10
+ <%= f.input :password, :input_html => {:size => 20} %>
11
+ <%= f.input :password_repeat, :input_html => {:size => 20} %>
12
+ <%= f.submit t('Play now'), {class: 'large_btn'} %>
13
+ <% end %>
14
+ <% else %>
15
+ <a href="<%= authorize_url %>"><%= image_tag "ogi_small_logo.png", :style => 'float: left;', :alt => 'Onlinegames-Info.com' %></a>
16
+ <% end %>
17
+ </div>
18
+
19
+ <div class="box" style="width: 50%; float: left;">
20
+ <h1><%= t 'Login' %></h1>
21
+
22
+ <div style="float:left">
23
+ <a href="<%= authorize_url %>"><%= image_tag "ogi_small_logo.png", :style => 'float: left;', :alt => 'Onlinegames-Info.com' %></a>
24
+ </div>
25
+
26
+ <% if 'development'.include?(Rails.env) %>
27
+ <a href="http://apps.facebook.com/piratebay-game/"><img src="/images/facebook.png" alt="Facebook"/></a>
28
+ <% end %>
29
+ </div>
30
+
31
+ <div style="clear: both;"></div>
@@ -0,0 +1,4 @@
1
+ <% content_for(:container_main_top) do %>
2
+ <% end %>
3
+
4
+ <%= render :partial => 'session/signup' %>
data/config/routes.rb ADDED
@@ -0,0 +1,23 @@
1
+ Rails.application.routes.draw do
2
+ get "authorize" => "session#new"
3
+ get "callback" => "session#callback"
4
+
5
+ get "login" => "session#index"
6
+ get "sign_up" => "session#index"
7
+ match "logout" => "session#destroy", via: [:get, :post, :delete]
8
+ post 'users' => "users#create", :as => :user
9
+
10
+ namespace :control_center do
11
+ resources :languages, :user_roles
12
+ resources :users do
13
+ collection do
14
+ get :check_user
15
+ get :login
16
+ end
17
+ end
18
+ end
19
+
20
+ namespace :game_config do
21
+ root :to => "dashboard#index"
22
+ end
23
+ end
@@ -0,0 +1,87 @@
1
+ class OgiConnect < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.integer :ogi_uid, :null => false
5
+ t.integer :char_id, :null => true
6
+ t.string :name
7
+ t.string :email
8
+ t.string :crypted_password, :null => true
9
+ t.string :password_salt, :null => true
10
+ t.string :persistence_token
11
+ t.string :single_access_token
12
+ t.string :perishable_token
13
+ t.string :language
14
+ t.date :birthday
15
+ t.string :gender
16
+ t.datetime :premium_time, :null => false
17
+ t.string :user_status
18
+ t.integer :alliance_id
19
+ t.integer :ref_id
20
+ t.string :campaign
21
+ t.integer :coins
22
+ t.boolean :is_bot, :default => false
23
+ t.integer :daily_login_count, :default => 0
24
+ t.datetime :vacation
25
+
26
+ t.integer :login_count, :null => false, :default => 0
27
+ t.integer :failed_login_count, :null => false, :default => 0
28
+ t.datetime :last_request_at
29
+ t.datetime :current_login_at
30
+ t.datetime :last_login_at
31
+ t.string :current_login_ip
32
+ t.string :last_login_ip
33
+
34
+ t.column "rnk", :integer, :default => 0, :null => false
35
+ t.column "rnkgespkt", :integer, :default => 0, :null => false
36
+ t.column "rnkmilpkt", :integer, :default => 0, :null => false
37
+ t.column "rnkforpkt", :integer, :default => 0, :null => false
38
+ t.column "rnkspipkt", :integer, :default => 0, :null => false
39
+ t.column "rnkgebpkt", :integer, :default => 0, :null => false
40
+ t.column "rnk_beruf", :integer, :default => 0, :null => false
41
+ t.column "member", :integer, :default => 0, :null => false
42
+ t.column "rnk_werbepkt", :integer, :default => 0, :null => false
43
+ t.column "rnk_geworbene", :integer, :default => 0, :null => false
44
+ t.column "spio_missionen", :integer, :default => 0, :null => false
45
+ t.column "sabo_missionen", :integer, :default => 0, :null => false
46
+ t.column "gegenspio_missionen", :integer, :default => 0, :null => false
47
+ t.column "spio_missionen_success", :integer, :default => 0, :null => false
48
+ t.column "sabo_missionen_success", :integer, :default => 0, :null => false
49
+ t.column "gegenspio_missionen_success", :integer, :default => 0, :null => false
50
+ t.column "spio_missionen_failure", :integer, :default => 0, :null => false
51
+ t.column "sabo_missionen_failure", :integer, :default => 0, :null => false
52
+ t.column "gegenspio_missionen_failure", :integer, :default => 0, :null => false
53
+ t.column "spys_captured", :integer, :default => 0, :null => false
54
+ t.column "spys_killed", :integer, :default => 0, :null => false
55
+ t.column "spys_randsom_got", :integer, :default => 0, :null => false
56
+ t.column "spys_randsom_payed", :integer, :default => 0, :null => false
57
+
58
+ t.column :oauth_token, :string
59
+ t.column :info_race_id, :integer
60
+
61
+ t.timestamps
62
+ end
63
+
64
+ add_index :users, :name
65
+ add_index :users, :persistence_token
66
+ add_index :users, :rnk
67
+
68
+ create_table :languages do |t|
69
+ t.string :short
70
+ t.string :name
71
+ t.timestamps
72
+ end
73
+
74
+ create_table :user_roles do |t|
75
+ t.integer :user_id
76
+ t.string :role
77
+
78
+ t.timestamps
79
+ end
80
+ end
81
+
82
+ def self.down
83
+ drop_table :users
84
+ drop_table :languages
85
+ drop_table :user_roles
86
+ end
87
+ end
@@ -0,0 +1,13 @@
1
+ class CreateLanguages < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :languages do |t|
4
+ t.string :short
5
+ t.string :name
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :languages
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ class CreateGuilds < ActiveRecord::Migration
2
+ #def self.up
3
+ # create_table :guilds do |t|
4
+ # t.string :name
5
+ # t.string :tag
6
+ # t.integer :ogi_alliance_id, :default => 0
7
+ # t.integer :gold, :null => false
8
+ # t.integer :diamanten, :null => false
9
+ # t.text :description
10
+ # t.integer :member_limit, :null => false
11
+ # t.integer :experience_bonus, :null => false
12
+ # t.integer :gold_bonus, :null => false
13
+ # t.string :image_file_name
14
+ # t.string :image_content_type
15
+ # t.integer :image_file_size
16
+ # t.timestamps
17
+ # end
18
+ #
19
+ # add_index :guilds, [:name]
20
+ # add_index :guilds, [:tag]
21
+ #end
22
+ #
23
+ #def self.down
24
+ # drop_table :guilds
25
+ #end
26
+ end
@@ -0,0 +1,14 @@
1
+ class CreateUserRoles < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :user_roles do |t|
4
+ t.integer :user_id
5
+ t.string :role
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :user_roles
13
+ end
14
+ end
@@ -0,0 +1,4 @@
1
+ require "onlinegames_info_connect/engine"
2
+
3
+ module OnlinegamesInfoConnect
4
+ end
@@ -0,0 +1,91 @@
1
+ module OnlinegamesInfoConnect
2
+ module AuthenticatedSystem
3
+ mattr_accessor :my_user, :roles
4
+
5
+ protected
6
+
7
+ def current_user
8
+ return false if session[:user_id].nil?
9
+ begin
10
+ @my_user = User.where(:id => session[:user_id]).first if @my_user.nil?
11
+ return @my_user
12
+ rescue
13
+ return false
14
+ end
15
+ end
16
+
17
+ def logged_in?
18
+ (current_user.nil? or current_user.class != User) ? false : true
19
+ end
20
+
21
+ def authorized?
22
+
23
+ end
24
+
25
+ def require_no_user
26
+ if logged_in? then
27
+ redirect_to game_path
28
+ return false
29
+ end
30
+
31
+ return true
32
+ end
33
+
34
+ def require_user
35
+ if not logged_in? then
36
+ store_location
37
+
38
+ respond_to do |format|
39
+ format.html { redirect_to login_path }
40
+ format.json { render :json => {status: 'not_authenticated'} }
41
+ end
42
+
43
+ return false
44
+ end
45
+
46
+ return init_user
47
+ end
48
+
49
+ def has_permission(role_type)
50
+ return false if not logged_in?
51
+ return current_user.has_right(role_type)
52
+ end
53
+
54
+ def check_user_role(role_type)
55
+ @roles = {} if @roles.nil?
56
+ if @roles[role_type].nil?
57
+ role = UserRole.where(:user_id => current_user.id, :role => role_type).first
58
+ @roles[role_type] = role.nil? ? false : true
59
+ end
60
+
61
+ return @roles[role_type]
62
+ end
63
+
64
+ def check_permission(role_type)
65
+ if not has_permission(role_type) then
66
+ redirect_to game_path
67
+ return false
68
+ end
69
+
70
+ return true
71
+ end
72
+
73
+
74
+ def check_user
75
+ if not logged_in? then
76
+ return true
77
+ end
78
+
79
+ return init_user
80
+ end
81
+
82
+ def store_location
83
+ session[:return_to] = request.fullpath
84
+ end
85
+
86
+ def redirect_back_or_default(default)
87
+ redirect_to(session[:return_to] || default)
88
+ session[:return_to] = nil
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,14 @@
1
+ module OnlinegamesInfoConnect
2
+ class Engine < ::Rails::Engine
3
+ require File.dirname(__FILE__)+'/authenticated_system'
4
+ require File.dirname(__FILE__)+'/oauth_friends'
5
+ require File.dirname(__FILE__)+'/oauth_guild'
6
+ require File.dirname(__FILE__)+'/oauth_medals'
7
+ require File.dirname(__FILE__)+'/oauth_messages'
8
+ require File.dirname(__FILE__)+'/oauth_premium'
9
+ require File.dirname(__FILE__)+'/oauth_users'
10
+ require File.dirname(__FILE__)+'/ogi_oauth'
11
+ require File.dirname(__FILE__)+'/ogi_token_api'
12
+ require File.dirname(__FILE__)+'/test_helper'
13
+ end
14
+ end
@@ -0,0 +1,24 @@
1
+ module OnlinegamesInfoConnect
2
+ module OauthFriends
3
+
4
+ def friends_index(user)
5
+ user.token.get("/api/friends").parsed
6
+ end
7
+
8
+ def friends_show(user, friend_id)
9
+ user.token.get("/api/friends/#{friend_id}").parsed
10
+ end
11
+
12
+ def friends_destroy(user, friend_id)
13
+ user.token.delete("/api/friends/#{friend_id}").parsed
14
+ end
15
+
16
+ def friends_create(user, to_char_id, to_unknown)
17
+ return user.token.post("/api/friends", {params: {to_char_id: to_char_id, to_unknown: to_unknown}}).parsed
18
+ end
19
+
20
+ def friends_confirm(user, friend_id)
21
+ return user.token.post("/api/friends/#{friend_id}/confirm").parsed
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ module OnlinegamesInfoConnect
2
+ module OauthGuild
3
+ def create_guild(guild, user)
4
+ return user.token.post("/api/guilds", {body: {name: guild.name, tag: guild.tag, user_id: user.ogi_uid, char_id: user.char_id}}).parsed
5
+ end
6
+
7
+ def remove_guild(guild, user)
8
+ return user.token.post("/api/guilds/remove", {body: {guild_id: guild.ogi_alliance_id}}).parsed
9
+ end
10
+
11
+ def add_user(guild, user, new_member)
12
+ return user.token.post("/api/guilds/add_user", {body: {guild_id: guild.ogi_alliance_id, user_id: new_member.ogi_uid, char_id: new_member.char_id}}).parsed
13
+ end
14
+
15
+ def remove_user_from_guild(guild, user, member)
16
+ return user.token.post("/api/guilds/remove_user", {body: {guild_id: guild.ogi_alliance_id, user_id: member.ogi_uid, char_id: member.char_id}}).parsed
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ module OnlinegamesInfoConnect
2
+ module OauthMedals
3
+ def add_medal(user, medal_id, level)
4
+ return user.token.post("/api/medals/#{user.id}", {body: {medal_id: medal_id, level: level}}).parsed
5
+ end
6
+
7
+ def get_medals(user)
8
+ return user.token.get("/api/medals/#{user.id}").parsed
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,21 @@
1
+ module OnlinegamesInfoConnect
2
+ module OauthMessages
3
+
4
+ def messages_index(user, mailbox)
5
+ user.token.get("/api/messages", {params: {mailbox: mailbox}}).parsed
6
+ end
7
+
8
+ def messages_show(user, message_id)
9
+ user.token.get("/api/messages/#{message_id}").parsed
10
+ end
11
+
12
+ def messages_destroy(user, message_id)
13
+ user.token.delete("/api/messages/#{message_id}").parsed
14
+ end
15
+
16
+ def messages_create(user, ip, message_type, to_char_id, to_unknown, subject, msg_text)
17
+ return user.token.post("/api/messages", {params: {ip: ip, message_type: message_type, subject: subject, message_text: msg_text,
18
+ to_char_id: to_char_id, to_unknown: to_unknown}}).parsed
19
+ end
20
+ end
21
+ end