red_base 0.5.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.
Files changed (278) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +339 -0
  3. data/README.rdoc +40 -0
  4. data/Rakefile +42 -0
  5. data/app/assets/fonts/DroidNaskh-Bold.ttf +0 -0
  6. data/app/assets/fonts/DroidNaskh-Regular.ttf +0 -0
  7. data/app/assets/fonts/OpenSans-Bold.ttf +0 -0
  8. data/app/assets/fonts/OpenSans-BoldItalic.ttf +0 -0
  9. data/app/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
  10. data/app/assets/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  11. data/app/assets/fonts/OpenSans-Italic.ttf +0 -0
  12. data/app/assets/fonts/OpenSans-Light.ttf +0 -0
  13. data/app/assets/fonts/OpenSans-LightItalic.ttf +0 -0
  14. data/app/assets/fonts/OpenSans-Regular.ttf +0 -0
  15. data/app/assets/fonts/OpenSans-Semibold.ttf +0 -0
  16. data/app/assets/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  17. data/app/assets/javascripts/red_base/application.js +20 -0
  18. data/app/assets/javascripts/red_base/dashboard/angular.js +9 -0
  19. data/app/assets/javascripts/red_base/dashboard/app.js +65 -0
  20. data/app/assets/javascripts/red_base/dashboard/application.js.erb +24 -0
  21. data/app/assets/javascripts/red_base/dashboard/functions.js.erb +91 -0
  22. data/app/assets/javascripts/red_base/dashboard/init.js +38 -0
  23. data/app/assets/javascripts/red_base/dashboard/init.js~ +0 -0
  24. data/app/assets/javascripts/red_base/dashboard/lib/angular-animate.js +1226 -0
  25. data/app/assets/javascripts/red_base/dashboard/lib/angular-gettext.js +202 -0
  26. data/app/assets/javascripts/red_base/dashboard/lib/angular-resource.js +578 -0
  27. data/app/assets/javascripts/red_base/dashboard/lib/angular-route.js +880 -0
  28. data/app/assets/javascripts/red_base/dashboard/lib/angular.js +20031 -0
  29. data/app/assets/javascripts/red_base/dashboard/lib/lodash.underscore.js +4893 -0
  30. data/app/assets/javascripts/red_base/dashboard/lib/restangular.js +1066 -0
  31. data/app/assets/javascripts/red_base/dashboard/locale/translations.js +5 -0
  32. data/app/assets/javascripts/red_base/dashboard/modules/anim.js +32 -0
  33. data/app/assets/javascripts/red_base/dashboard/modules/api.js +32 -0
  34. data/app/assets/javascripts/red_base/dashboard/modules/auth/auth.js +34 -0
  35. data/app/assets/javascripts/red_base/dashboard/modules/auth/group.js +174 -0
  36. data/app/assets/javascripts/red_base/dashboard/modules/auth/user.js +122 -0
  37. data/app/assets/javascripts/red_base/dashboard/modules/list-view.js +293 -0
  38. data/app/assets/javascripts/red_base/dashboard/modules/logs.js +41 -0
  39. data/app/assets/javascripts/red_base/dashboard/modules/modules.js +50 -0
  40. data/app/assets/javascripts/red_base/dashboard/modules/nav.js.erb +92 -0
  41. data/app/assets/javascripts/red_base/dashboard/templates/application.handlebars.erb +42 -0
  42. data/app/assets/javascripts/red_base/dashboard/templates/auth/groups/details.handlebars.erb +15 -0
  43. data/app/assets/javascripts/red_base/dashboard/templates/auth/groups/index.handlebars.erb +7 -0
  44. data/app/assets/javascripts/red_base/dashboard/templates/auth/groups/new.handlebars.erb +39 -0
  45. data/app/assets/javascripts/red_base/dashboard/templates/auth/index.handlebars.erb +31 -0
  46. data/app/assets/javascripts/red_base/dashboard/templates/auth/users/details.handlebars.erb +15 -0
  47. data/app/assets/javascripts/red_base/dashboard/templates/auth/users/index.handlebars.erb +11 -0
  48. data/app/assets/javascripts/red_base/dashboard/templates/auth/users/new.handlebars.erb +33 -0
  49. data/app/assets/javascripts/red_base/dashboard/templates/components/list-view.handlebars.erb +59 -0
  50. data/app/assets/javascripts/red_base/dashboard/templates/components/model-form.handlebars.erb +3 -0
  51. data/app/assets/javascripts/red_base/dashboard/templates/modules.handlebars.erb +15 -0
  52. data/app/assets/javascripts/red_base/dashboard/templates/navigation.handlebars.erb +43 -0
  53. data/app/assets/javascripts/red_base/dashboard/templates/widgets.handlebars +23 -0
  54. data/app/assets/javascripts/red_base/dashboard/variables.js.erb +17 -0
  55. data/app/assets/javascripts/red_base/groups.js +2 -0
  56. data/app/assets/javascripts/red_base/home.js +2 -0
  57. data/app/assets/javascripts/red_base/i18n.js +13 -0
  58. data/app/assets/javascripts/red_base/locale/en.json +27 -0
  59. data/app/assets/javascripts/red_base/locale/fa.json +27 -0
  60. data/app/assets/javascripts/red_base/users.js +2 -0
  61. data/app/assets/stylesheets/red_base/base.css.scss +402 -0
  62. data/app/assets/stylesheets/red_base/dashboard/dashboard.css.scss +169 -0
  63. data/app/assets/stylesheets/red_base/dashboard/ltr/application.css +21 -0
  64. data/app/assets/stylesheets/red_base/dashboard/ltr/base.css.scss.erb +28 -0
  65. data/app/assets/stylesheets/red_base/dashboard/ltr/base.css.scss~ +15 -0
  66. data/app/assets/stylesheets/red_base/dashboard/ltr/buttons.css.scss.erb +48 -0
  67. data/app/assets/stylesheets/red_base/dashboard/ltr/direction.css.scss +38 -0
  68. data/app/assets/stylesheets/red_base/dashboard/ltr/foundation_and_overrides.css.scss +1014 -0
  69. data/app/assets/stylesheets/red_base/dashboard/rtl/application.css +21 -0
  70. data/app/assets/stylesheets/red_base/dashboard/rtl/base.css.scss.erb +31 -0
  71. data/app/assets/stylesheets/red_base/dashboard/rtl/base.css.scss~ +1 -0
  72. data/app/assets/stylesheets/red_base/dashboard/rtl/base.css_flymake.scss +25 -0
  73. data/app/assets/stylesheets/red_base/dashboard/rtl/buttons.css.scss.erb +45 -0
  74. data/app/assets/stylesheets/red_base/dashboard/rtl/direction.css.scss +37 -0
  75. data/app/assets/stylesheets/red_base/dashboard/rtl/foundation_and_overrides.css.scss +1014 -0
  76. data/app/assets/stylesheets/red_base/dashboard/sidebar.css.scss +93 -0
  77. data/app/assets/stylesheets/red_base/devise.css.scss +34 -0
  78. data/app/assets/stylesheets/red_base/groups.css +4 -0
  79. data/app/assets/stylesheets/red_base/home.css.scss +14 -0
  80. data/app/assets/stylesheets/red_base/ltr/application.css +20 -0
  81. data/app/assets/stylesheets/red_base/ltr/buttons.css.scss.erb +48 -0
  82. data/app/assets/stylesheets/red_base/ltr/foundation_and_overrides.scss.erb +1012 -0
  83. data/app/assets/stylesheets/red_base/mixins.css.scss +15 -0
  84. data/app/assets/stylesheets/red_base/mixins.css.scss~ +7 -0
  85. data/app/assets/stylesheets/red_base/rtl/application.css +20 -0
  86. data/app/assets/stylesheets/red_base/rtl/buttons.css.scss.erb +48 -0
  87. data/app/assets/stylesheets/red_base/rtl/foundation_and_overrides.scss.erb +1012 -0
  88. data/app/assets/stylesheets/red_base/users.css +4 -0
  89. data/app/assets/stylesheets/red_base/variables.css.scss +100 -0
  90. data/app/controllers/red_base/api/v1/groups_controller.rb +65 -0
  91. data/app/controllers/red_base/api/v1/logs_controller.rb +12 -0
  92. data/app/controllers/red_base/api/v1/permissions_controller.rb +17 -0
  93. data/app/controllers/red_base/api/v1/users_controller.rb +54 -0
  94. data/app/controllers/red_base/api_controller.rb +51 -0
  95. data/app/controllers/red_base/application_controller.rb +34 -0
  96. data/app/controllers/red_base/dashboard_controller.rb +40 -0
  97. data/app/controllers/red_base/home_controller.rb +19 -0
  98. data/app/controllers/red_base/omniauth/callbacks_controller.rb +43 -0
  99. data/app/controllers/red_base/users/omniauth_callbacks_controller.rb~ +2 -0
  100. data/app/helpers/red_base/application_helper.rb +4 -0
  101. data/app/helpers/red_base/dashboard_helper.rb +5 -0
  102. data/app/helpers/red_base/groups_helper.rb +4 -0
  103. data/app/helpers/red_base/home_helper.rb +4 -0
  104. data/app/helpers/red_base/users_helper.rb +4 -0
  105. data/app/models/ability.rb +39 -0
  106. data/app/models/red_base/group.rb +27 -0
  107. data/app/models/red_base/permission.rb +15 -0
  108. data/app/models/red_base/user.rb +77 -0
  109. data/app/views/angularjs_templates/auth/groups/details.html +21 -0
  110. data/app/views/angularjs_templates/auth/groups/index.html +5 -0
  111. data/app/views/angularjs_templates/auth/groups/new.html +40 -0
  112. data/app/views/angularjs_templates/auth/index.html +30 -0
  113. data/app/views/angularjs_templates/auth/users/details.html +28 -0
  114. data/app/views/angularjs_templates/auth/users/index.html +6 -0
  115. data/app/views/angularjs_templates/auth/users/new.html +45 -0
  116. data/app/views/angularjs_templates/index.html +8 -0
  117. data/app/views/angularjs_templates/list-view/index.html +66 -0
  118. data/app/views/angularjs_templates/locale/fa.po +25 -0
  119. data/app/views/angularjs_templates/locale/templates.pot +24 -0
  120. data/app/views/angularjs_templates/logs/index.html +6 -0
  121. data/app/views/angularjs_templates/modules.html +17 -0
  122. data/app/views/angularjs_templates/nav.html.erb +38 -0
  123. data/app/views/angularjs_templates/nav.html.erb~ +43 -0
  124. data/app/views/devise/confirmations/new.html.erb +34 -0
  125. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  126. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  127. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  128. data/app/views/devise/passwords/edit.html.erb +44 -0
  129. data/app/views/devise/passwords/new.html.erb +32 -0
  130. data/app/views/devise/registrations/edit.html.erb +29 -0
  131. data/app/views/devise/registrations/new.html.erb +91 -0
  132. data/app/views/devise/sessions/new.html.erb +98 -0
  133. data/app/views/devise/shared/_links.erb +25 -0
  134. data/app/views/devise/unlocks/new.html.erb +30 -0
  135. data/app/views/layouts/red_base/application.html.erb +90 -0
  136. data/app/views/layouts/red_base/dashboard.html.erb +21 -0
  137. data/app/views/red_base/api/v1/groups/create.json.jbuilder +4 -0
  138. data/app/views/red_base/api/v1/groups/destroy.html.erb +2 -0
  139. data/app/views/red_base/api/v1/groups/destroy.json.jbuilder +1 -0
  140. data/app/views/red_base/api/v1/groups/edit.html.erb +2 -0
  141. data/app/views/red_base/api/v1/groups/index.html.erb +2 -0
  142. data/app/views/red_base/api/v1/groups/index.json.jbuilder +6 -0
  143. data/app/views/red_base/api/v1/groups/new.html.erb +2 -0
  144. data/app/views/red_base/api/v1/groups/show.html.erb +2 -0
  145. data/app/views/red_base/api/v1/groups/show.json.jbuilder +5 -0
  146. data/app/views/red_base/api/v1/groups/update.json.jbuilder +4 -0
  147. data/app/views/red_base/api/v1/logs/index.json.jbuilder +1 -0
  148. data/app/views/red_base/api/v1/permissions/index.json.jbuilder +1 -0
  149. data/app/views/red_base/api/v1/users/create.html.erb +2 -0
  150. data/app/views/red_base/api/v1/users/create.json.jbuilder +1 -0
  151. data/app/views/red_base/api/v1/users/destroy.json.jbuilder +1 -0
  152. data/app/views/red_base/api/v1/users/distroy.html.erb +2 -0
  153. data/app/views/red_base/api/v1/users/edit.html.erb +2 -0
  154. data/app/views/red_base/api/v1/users/index.html.erb +2 -0
  155. data/app/views/red_base/api/v1/users/index.json.jbuilder +4 -0
  156. data/app/views/red_base/api/v1/users/show.html.erb +2 -0
  157. data/app/views/red_base/api/v1/users/show.json.jbuilder +2 -0
  158. data/app/views/red_base/api/v1/users/update.json.jbuilder +1 -0
  159. data/app/views/red_base/dashboard/index.html.erb +37 -0
  160. data/app/views/red_base/home/index.html.erb +119 -0
  161. data/config/initializers/devise.rb +28 -0
  162. data/config/locales/devise.en.yml +59 -0
  163. data/config/locales/devise.fa.yml +56 -0
  164. data/config/locales/fa/LC_MESSAGES/red_base.mo +0 -0
  165. data/config/locales/fa/messages.mo +0 -0
  166. data/config/locales/fa/red_base.po +181 -0
  167. data/config/locales/red_base.pot +181 -0
  168. data/config/routes.rb +33 -0
  169. data/db/migrate/20131013091000_devise_create_red_base_users.rb +64 -0
  170. data/db/migrate/20131020124701_create_red_base_groups.rb +9 -0
  171. data/db/migrate/20131021170923_create_red_base_permissions.rb +10 -0
  172. data/db/migrate/20131123120422_add_permissions_groups_table.rb +8 -0
  173. data/db/seeds.rb +15 -0
  174. data/lib/devise_patch.rb~ +5 -0
  175. data/lib/generators/red_base/USAGE +8 -0
  176. data/lib/generators/red_base/angularjs_resource_generator.rb +74 -0
  177. data/lib/generators/red_base/install_all_generator.rb +38 -0
  178. data/lib/generators/red_base/install_generator.rb +42 -0
  179. data/lib/generators/red_base/install_specs_generator.rb +48 -0
  180. data/lib/generators/red_base/js_scaffold_generator.rb +232 -0
  181. data/lib/generators/red_base/templates/README +41 -0
  182. data/lib/generators/red_base/templates/README~ +4 -0
  183. data/lib/generators/red_base/templates/SPECS +13 -0
  184. data/lib/generators/red_base/templates/angularjs/details.html.erb +20 -0
  185. data/lib/generators/red_base/templates/angularjs/details.html.erb~ +0 -0
  186. data/lib/generators/red_base/templates/angularjs/index.html.erb +59 -0
  187. data/lib/generators/red_base/templates/angularjs/module.js.erb +259 -0
  188. data/lib/generators/red_base/templates/angularjs/new.html.erb +43 -0
  189. data/lib/generators/red_base/templates/api/controller.rb.erb +54 -0
  190. data/lib/generators/red_base/templates/api/controller.rb.erb~ +37 -0
  191. data/lib/generators/red_base/templates/devise.rb +251 -0
  192. data/lib/generators/red_base/templates/devise.rb~ +238 -0
  193. data/lib/generators/red_base/templates/fast_gettext.rb +4 -0
  194. data/lib/generators/red_base/templates/features/api.feature +92 -0
  195. data/lib/generators/red_base/templates/features/api.step.rb +7 -0
  196. data/lib/generators/red_base/templates/features/step_definitions/email_steps.rb +206 -0
  197. data/lib/generators/red_base/templates/features/support/email_spec.rb +1 -0
  198. data/lib/generators/red_base/templates/features/support/env.rb +79 -0
  199. data/lib/generators/red_base/templates/formtastic.rb +76 -0
  200. data/lib/generators/red_base/templates/js_scaffold.README +25 -0
  201. data/lib/generators/red_base/templates/red_base.rb +14 -0
  202. data/lib/generators/red_base/templates/red_base.rb~ +251 -0
  203. data/lib/generators/red_base/templates/seeds.rb +1 -0
  204. data/lib/generators/red_base/templates/spec/factories/groups.rb +5 -0
  205. data/lib/generators/red_base/templates/spec/factories/users.rb +10 -0
  206. data/lib/generators/red_base/templates/spec/spec_helper.rb +69 -0
  207. data/lib/generators/red_base/templates/spec/support/devise.rb +3 -0
  208. data/lib/generators/red_base/templates/views/create.json.jbuilder.erb +2 -0
  209. data/lib/generators/red_base/templates/views/destroy.json.jbuilder.erb +1 -0
  210. data/lib/generators/red_base/templates/views/index.json.jbuilder.erb +10 -0
  211. data/lib/generators/red_base/templates/views/index.json.jbuilder.erb~ +0 -0
  212. data/lib/generators/red_base/templates/views/show.json.jbuilder.erb +6 -0
  213. data/lib/generators/red_base/templates/views/update.json.jbuilder.erb +6 -0
  214. data/lib/generators/red_base/views_generator.rb +41 -0
  215. data/lib/red_base/active_record.rb +78 -0
  216. data/lib/red_base/active_record.rb~ +0 -0
  217. data/lib/red_base/api/groups_api.rb +41 -0
  218. data/lib/red_base/api/permissions_api.rb +24 -0
  219. data/lib/red_base/api/root.rb +15 -0
  220. data/lib/red_base/api/users_api.rb +20 -0
  221. data/lib/red_base/api.rb +61 -0
  222. data/lib/red_base/cucumber/auth.rb +45 -0
  223. data/lib/red_base/cucumber/exceptions.rb +40 -0
  224. data/lib/red_base/cucumber/interaction.rb +43 -0
  225. data/lib/red_base/cucumber/query.rb +28 -0
  226. data/lib/red_base/cucumber/urls.rb +76 -0
  227. data/lib/red_base/cucumber.rb +25 -0
  228. data/lib/red_base/dashboard/controller.rb +42 -0
  229. data/lib/red_base/dashboard/module.rb +45 -0
  230. data/lib/red_base/dashboard/module.rb~ +25 -0
  231. data/lib/red_base/dashboard.rb +60 -0
  232. data/lib/red_base/dashboard.rb~ +18 -0
  233. data/lib/red_base/engine.rb +132 -0
  234. data/lib/red_base/exceptions.rb +26 -0
  235. data/lib/red_base/i18n.rb +35 -0
  236. data/lib/red_base/initialize.rb +7 -0
  237. data/lib/red_base/omniauth/callbacks.rb +58 -0
  238. data/lib/red_base/omniauth/callbakcs.rb~ +7 -0
  239. data/lib/red_base/omniauth.rb +24 -0
  240. data/lib/red_base/omniauth.rb~ +1 -0
  241. data/lib/red_base/plugins.rb +44 -0
  242. data/lib/red_base/version.rb +22 -0
  243. data/lib/red_base.rb +30 -0
  244. data/lib/tasks/grunt/Gruntfile.js +25 -0
  245. data/lib/tasks/red_base_tasks.rake +23 -0
  246. data/spec/dummy/README.rdoc +28 -0
  247. data/spec/dummy/Rakefile +6 -0
  248. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  249. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  250. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  251. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  252. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  253. data/spec/dummy/bin/bundle +3 -0
  254. data/spec/dummy/bin/rails +4 -0
  255. data/spec/dummy/bin/rake +4 -0
  256. data/spec/dummy/config/application.rb +23 -0
  257. data/spec/dummy/config/boot.rb +5 -0
  258. data/spec/dummy/config/database.yml +25 -0
  259. data/spec/dummy/config/environment.rb +5 -0
  260. data/spec/dummy/config/environments/development.rb +29 -0
  261. data/spec/dummy/config/environments/production.rb +80 -0
  262. data/spec/dummy/config/environments/test.rb +36 -0
  263. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  264. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  265. data/spec/dummy/config/initializers/inflections.rb +16 -0
  266. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  267. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  268. data/spec/dummy/config/initializers/session_store.rb +3 -0
  269. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  270. data/spec/dummy/config/locales/en.yml +23 -0
  271. data/spec/dummy/config/routes.rb +4 -0
  272. data/spec/dummy/config.ru +4 -0
  273. data/spec/dummy/public/404.html +58 -0
  274. data/spec/dummy/public/422.html +58 -0
  275. data/spec/dummy/public/500.html +57 -0
  276. data/spec/dummy/public/favicon.ico +0 -0
  277. data/spec/spec_helper.rb +52 -0
  278. metadata +661 -0
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,100 @@
1
+ $headerHeight: 45px;
2
+ $logoWidth: 150px;
3
+ $logoHeight: 200px;
4
+
5
+ $base_unit: 150px;
6
+
7
+ $wet_asphalt: #34495E;
8
+ $midnight_blue: #2C3E50;
9
+
10
+ $headerbg: #111111;
11
+ $darkbg: #202224;
12
+
13
+ $clouds: #ecf0f1;
14
+ $silver: #bdc3c7;
15
+
16
+ $emerald: #85AE42;
17
+ $nephritis: #27ae60;
18
+
19
+ $alizarin: #E45760;
20
+ $pomegranate: #c0392b;
21
+
22
+ $turquoise: #1ABC9C;
23
+ $green_sea: #16A085;
24
+
25
+ $peter_river: #6DA6BA;
26
+ $belize_hole: #4E8FA6;
27
+
28
+ $amethyst: #9b59b6;
29
+ $wisteria: #8e44ad;
30
+
31
+ $sun_flower: #f0ba4b;
32
+ $orange: #F0BA4B;
33
+
34
+ $carrot: #E67E22;
35
+ $pumpkin: #D35400;
36
+
37
+ $darkergray: #232A30;
38
+ $darkgray: #4f4f4f;
39
+ $lightgray: #7F8C8D;
40
+ $lightergray: #E3E3E3;
41
+ $verylightgray: #fbfbfb;
42
+ $ultra_blue: #F4F4F4;
43
+
44
+ $header-height: 50px;
45
+ $box-bottom-border: 4px;
46
+ $hover-box: $emerald;
47
+
48
+ $dashboard-nav-background: #232A30;
49
+ $dashboard-background: #efefef;
50
+ $dashboard-nav-hover: #2E3639;
51
+ $border-radius: 4px;
52
+
53
+ $selected-bg: $orange;
54
+
55
+ .emerald {
56
+ background: $emerald;
57
+ }
58
+
59
+ .orange {
60
+ Background: $orange;
61
+ }
62
+
63
+
64
+ .alizarin {
65
+ Background: $alizarin;
66
+ }
67
+
68
+ .sun_flower {
69
+ Background: $sun_flower;
70
+ }
71
+
72
+ .peter_river {
73
+ Background: $peter_river;
74
+ }
75
+
76
+ .wisteria {
77
+ Background: $wisteria;
78
+ }
79
+
80
+ .amethyst {
81
+ Background: $amethyst;
82
+ }
83
+
84
+ .pomegranate {
85
+ Background: $pomegranate;
86
+ }
87
+
88
+ .belize_hole {
89
+ Background: $belize_hole;
90
+ }
91
+
92
+ .nephritis {
93
+ background: $nephritis;
94
+ }
95
+
96
+ .color-white {
97
+ h1, h2, h3, h4, h5, span, p {
98
+ color: white;
99
+ }
100
+ }
@@ -0,0 +1,65 @@
1
+ require_dependency "red_base/api_controller"
2
+
3
+ module RedBase
4
+ class API::V1::GroupsController < APIController
5
+ # TODO: Use strong params
6
+ # TODO: implement authorization
7
+
8
+ # GET /api/v1/groups
9
+ def index
10
+ @groups = Group.includes(:permissions).all
11
+ authorize! :read, @groups
12
+ respond_with(@groups)
13
+ end
14
+
15
+ def create
16
+ authorize! :create, RedBase::Group
17
+
18
+ permissions = [];
19
+
20
+ (params[:permissions] || []).each do |perm_string|
21
+ perm, model = perm_string.split "|"
22
+ permission = Permission.find_or_create_by_model_and_permission_type(model, perm)
23
+ permissions << permission
24
+ end
25
+
26
+ @group = Group.create!({
27
+ name: params[:name],
28
+ permissions: permissions,
29
+ })
30
+ respond_with(@group)
31
+
32
+ end
33
+
34
+ def show
35
+ @group = Group.find(params[:id])
36
+ authorize! :read, @group
37
+ respond_with(@group)
38
+ end
39
+
40
+ def update
41
+
42
+ @group = Group.find(params[:id])
43
+ authorize! :update, @group
44
+
45
+ permissions = [];
46
+ (params[:permissions] || []).each do |perm_string|
47
+ perm, model = perm_string.split "|"
48
+ permission = Permission.find_or_create_by_model_and_permission_type(model, perm)
49
+ permissions << permission
50
+ end
51
+
52
+ @group.update(:name => params[:name],
53
+ :permissions => permissions)
54
+ respond_with(@group)
55
+ end
56
+
57
+ def destroy
58
+ ids = params[:id].split(",")
59
+ @groups = Group.where(:id => ids)
60
+ authorize! :destory, @groups
61
+ @groups.destroy_all
62
+ end
63
+ end
64
+
65
+ end
@@ -0,0 +1,12 @@
1
+ require_dependency "red_base/api_controller"
2
+
3
+ module RedBase
4
+ class API::V1::LogsController < APIController
5
+
6
+ # GET /api/v1/logs
7
+ def index
8
+ @data = File.open("#{Rails.root}/log/#{Rails.env}.log").read(4096)
9
+ respond_with(@data)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ require_dependency "red_base/application_controller"
2
+
3
+ module RedBase
4
+ class API::V1::PermissionsController < ApplicationController
5
+
6
+ # GET /api/v1/groups
7
+ def index
8
+ @permissions = []
9
+
10
+ RedBase::Engine.models_with_permission.each do |model|
11
+ model = Object.const_get(model)
12
+ @permissions.concat(model::Permissions.permission_strings(model))
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,54 @@
1
+ require_dependency "red_base/application_controller"
2
+
3
+ module RedBase
4
+ class API::V1::UsersController < APIController
5
+
6
+ def index
7
+ @users = User.joins(:group).all
8
+ authorize! :read, @users
9
+ respond_with(@users)
10
+ end
11
+
12
+ def show
13
+ @user = User.find(params[:id])
14
+ authorize! :read, @user
15
+ end
16
+
17
+ def destroy
18
+ ids = params[:id].split(",")
19
+ @users = User.where(:id => ids)
20
+ authorize! :destory, @groups
21
+ @users.destroy_all
22
+ end
23
+
24
+ def update
25
+ group = Group.find(params[:group])
26
+ @user = User.find(params[:id])
27
+ authorize! :update, @user
28
+ user_fields = {
29
+ first_name: params[:first_name],
30
+ last_name: params[:last_name],
31
+ email: params[:email],
32
+ group: group,
33
+ }
34
+ if params[:password]
35
+ user_fields["password"] = params[:password]
36
+ end
37
+ @user.update(user_fields)
38
+ end
39
+
40
+ def create
41
+ authorize! :create, RedBase::User
42
+ group = Group.find(params[:group])
43
+ if group
44
+ @user = User.create!({
45
+ first_name: params[:first_name],
46
+ last_name: params[:last_name],
47
+ email: params[:email],
48
+ password: params[:password],
49
+ group: group,
50
+ })
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,51 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Red Base - Basic website skel engine
3
+ # Copyright (C) 2012-2013 Yellowen
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ # -----------------------------------------------------------------------------
19
+ require_dependency "red_base/api_controller"
20
+
21
+
22
+ class RedBase::APIController < RedBase::ApplicationController
23
+ respond_to :json
24
+
25
+ before_filter :authenticate_user!
26
+
27
+ protect_from_forgery
28
+
29
+ after_filter :set_csrf_cookie_for_ng
30
+
31
+ def set_csrf_cookie_for_ng
32
+ cookies['XSRF-TOKEN'] = form_authenticity_token if protect_against_forgery?
33
+ end
34
+
35
+ rescue_from CanCan::AccessDenied do |exception|
36
+
37
+ render :status => 403, :json => {
38
+ :error => _("You don't have access to this page"),
39
+ :orig_msg => exception.message,
40
+ :action => exception.action,
41
+ }
42
+ end
43
+
44
+ protected
45
+
46
+ def verified_request?
47
+ super || form_authenticity_token == request.headers['X-XSRF-TOKEN']
48
+ end
49
+
50
+
51
+ end
@@ -0,0 +1,34 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Red Base - Basic website skel engine
3
+ # Copyright (C) 2012-2013 Yellowen
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ # -----------------------------------------------------------------------------
19
+ class RedBase::ApplicationController < ActionController::Base
20
+ include FastGettext::Translation
21
+ before_filter :set_locale
22
+
23
+
24
+ def set_locale
25
+ FastGettext.add_text_domain 'red_base', :path => "#{RedBase::Engine.root}/config/locales", :type => :po
26
+ # All languages you want to allow
27
+ FastGettext.default_available_locales = RedBase::Engine.locales
28
+ FastGettext.default_text_domain = 'red_base'
29
+
30
+ lang = request.env['lang'] || params[:locale] || session[:locale] || I18n.default_locale
31
+ FastGettext.set_locale(lang.to_sym)
32
+ session[:locale] = I18n.locale = lang
33
+ end
34
+ end
@@ -0,0 +1,40 @@
1
+ require_dependency "red_base/application_controller"
2
+
3
+ module RedBase
4
+ class DashboardController < ApplicationController
5
+
6
+ include RedBase::Dashboard::Controller
7
+
8
+ layout "red_base/dashboard"
9
+ before_filter :authenticate_user!
10
+
11
+ respond_to :json, :html
12
+
13
+ def jstemplate
14
+ render :template => "angularjs_templates/#{params[:path]}", :layout => nil
15
+ end
16
+
17
+ def index
18
+ @jstemplates_path = "/templates"
19
+ end
20
+
21
+ def modules
22
+ dashboard_modules = []
23
+
24
+ RedBase::Engine.dashboard_modules.each do |module_name, attrs|
25
+ if not attrs.include? :title
26
+ attrs[:title] = _(module_name.to_s)
27
+ end
28
+
29
+ if not attrs.include? :resource
30
+ attrs[:resource] = module_name.to_s
31
+ end
32
+
33
+ dashboard_modules << attrs
34
+ end
35
+ dashboard_modules = {:modules => dashboard_modules}
36
+ respond_with dashboard_modules
37
+ end
38
+ end
39
+
40
+ end
@@ -0,0 +1,19 @@
1
+ require_dependency "red_base/application_controller"
2
+
3
+ module RedBase
4
+ class HomeController < ApplicationController
5
+ include RedBase::Dashboard::Module
6
+
7
+ name = "home"
8
+ # priority 100
9
+
10
+ # show_me_on :header
11
+
12
+ def index
13
+ end
14
+
15
+ def content_for_header
16
+ render "homelink"
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,43 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Red Base - Basic website skel engine
3
+ # Copyright (C) 2012-2013 Yellowen
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ # -----------------------------------------------------------------------------
19
+
20
+ module RedBase
21
+ module Omniauth
22
+ class CallbacksController < Devise::OmniauthCallbacksController
23
+
24
+ # Create a method for each service you want to override
25
+ # If you do not provide a method a default one will used
26
+ # Here is facebook method for an example
27
+ def facebook
28
+ create_or_find_user
29
+
30
+ if @user.persisted?
31
+ sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
32
+ set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format?
33
+ else
34
+ session["devise.facebook_data"] = request.env["omniauth.auth"]
35
+ redirect_to new_user_registration_url
36
+ end
37
+ end
38
+
39
+ include RedBase::Omniauth::Callbacks
40
+
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,2 @@
1
+ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
2
+ end
@@ -0,0 +1,4 @@
1
+ module RedBase
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ module RedBase
2
+ module DashboardHelper
3
+
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ module RedBase
2
+ module GroupsHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module RedBase
2
+ module HomeHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module RedBase
2
+ module UsersHelper
3
+ end
4
+ end
@@ -0,0 +1,39 @@
1
+ class Ability
2
+ include CanCan::Ability
3
+
4
+ def initialize(user)
5
+ # Define abilities for the passed in user here. For example:
6
+ #
7
+ # user ||= User.new # guest user (not logged in)
8
+ # if user.admin?
9
+ # can :manage, :all
10
+ # else
11
+ # can :read, :all
12
+ # end
13
+ #
14
+ # The first argument to `can` is the action you are giving the user
15
+ # permission to do.
16
+ # If you pass :manage it will apply to every action. Other common actions
17
+ # here are :read, :create, :update and :destroy.
18
+ #
19
+ # The second argument is the resource the user can perform the action on.
20
+ # If you pass :all it will apply to every resource. Otherwise pass a Ruby
21
+ # class of the resource.
22
+ #
23
+ # The third argument is an optional hash of conditions to further filter the
24
+ # objects.
25
+ # For example, here the user can only update published articles.
26
+ #
27
+ # can :update, Article, :published => true
28
+ #
29
+ # See the wiki for details:
30
+ # https://github.com/ryanb/cancan/wiki/Defining-Abilities
31
+
32
+ # IMPORTANT: Remove this snippet with more suitable one
33
+ # TODO: Remove this snippet with more suitable one
34
+
35
+ if user and user.group_id == 1
36
+ can :manage, :all
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Red Base - Basic website skel engine
3
+ # Copyright (C) 2012-2013 Yellowen
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ # -----------------------------------------------------------------------------
19
+
20
+ module RedBase
21
+ class Group < ActiveRecord::Base
22
+ #validate :name, :presence => true, :unique => true
23
+
24
+ has_and_belongs_to_many :permissions
25
+ has_many :users
26
+ end
27
+ end
@@ -0,0 +1,15 @@
1
+ module RedBase
2
+ class Permission < ActiveRecord::Base
3
+
4
+ has_and_belongs_to_many :groups
5
+
6
+ def string_repr
7
+ _("can %s %s") % [_(self.permission_type.to_s), self.model.underscore.humanize]
8
+ end
9
+
10
+ def id_repr
11
+ "#{self.permission_type.to_s}|#{self.model}"
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,77 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Red Base - Basic website skel engine
3
+ # Copyright (C) 2012-2013 Yellowen
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 2 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
+ # -----------------------------------------------------------------------------
19
+
20
+ module RedBase
21
+ class User < ActiveRecord::Base
22
+ # Include default devise modules. Others available are:
23
+ # :token_authenticatable, :confirmable,
24
+ # :lockable, :timeoutable and :omniauthable
25
+ @@devise_options = [:database_authenticatable,
26
+ :registerable,
27
+ :recoverable,
28
+ :rememberable,
29
+ :trackable,
30
+ :lockable,
31
+ :timeoutable,
32
+ :validatable]
33
+
34
+ if Rails.env.production?
35
+ @@devise_options << :confirmable
36
+ end
37
+
38
+ if Devise.omniauth_configs.any?
39
+ @@devise_options << :omniauthable
40
+ @@devise_options << {:omniauth_providers => Devise.omniauth_configs.keys}
41
+ belongs_to :group
42
+ end
43
+
44
+ devise *@@devise_options
45
+
46
+ def password_required?
47
+ # TODO: nil? is not suitable for here we should use empty? or blink?
48
+
49
+ (provider.nil? || password.nil?) && super
50
+ end
51
+
52
+ def self.find_from_oauth(auth, signed_in_resource=nil)
53
+ user = User.where(:provider => auth.provider, :uid => auth.uid).first
54
+
55
+ first_name = auth.info.first_name
56
+ last_name = auth.info.last_name
57
+
58
+ if first_name.blank?
59
+ # With first_name being blank last_name is probably is blank too
60
+ name = auth.info.name.split(" ")
61
+ first_name = name[0]
62
+ last_name = name[1,] || ""
63
+ end
64
+ unless user
65
+ user = User.create(first_name: first_name,
66
+ last_name: last_name,
67
+ provider: auth.provider,
68
+ uid: auth.uid,
69
+ email: auth.info.email,
70
+ password: Devise.friendly_token[0,20])
71
+ end
72
+ user
73
+
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,21 @@
1
+ <div class="details">
2
+ <p>
3
+ <b translate>Group Name :</b>{{this.object.name}}
4
+ </p>
5
+
6
+ <p>
7
+ <b translate>Permissions :</b>
8
+ <ul>
9
+ <li ng-repeat="perm in this.object.permissions">{{ perm.string_repr }}</li>
10
+ </ul>
11
+ </p>
12
+
13
+ <ul class="button-group float-right">
14
+ <a ng-href="#/auth/groups/{{ this.object.id }}/edit" class="small">
15
+ <span class="fa fa-edit"></span> <span translated>Edit</span>
16
+ </a>
17
+ <!--<a ng-href="#/auth/groups/{{ this.object.id }}" class="small">
18
+ <span class="fa fa-eye"></span><span translated>Show</span>-->
19
+ </a>
20
+ </ul>
21
+ </div>
@@ -0,0 +1,5 @@
1
+ <list-view buttons="buttons" objects="groups" title-attribute="'name'" details-template="details_template" item-per-page="10" on_delete="on_delete">
2
+ <div class="small-6 column text-left clearpadding">
3
+ <h3><i class="fa fa-group"></i> <span translate>Groups</span></h3>
4
+ </div>
5
+ </list-view>