digital_heroes_startkit 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +37 -0
- data/Rakefile +36 -0
- data/app/assets/config/digital_heroes_startkit_manifest.js +0 -0
- data/app/assets/javascripts/authorization.coffee +79 -0
- data/app/assets/javascripts/avatar.coffee +16 -0
- data/app/assets/javascripts/datepicker.js +2 -0
- data/app/assets/javascripts/digital_heroes_startkit/cable.js +13 -0
- data/app/assets/javascripts/digital_heroes_startkit/channels/pills.coffee +23 -0
- data/app/assets/javascripts/digital_heroes_startkit/input.coffee +5 -0
- data/app/assets/javascripts/digital_heroes_startkit/pills.coffee +2 -0
- data/app/assets/javascripts/digital_heroes_startkit/snap.svg-min.js +21 -0
- data/app/assets/javascripts/digital_heroes_startkit.js +26 -0
- data/app/assets/javascripts/profile.coffee +53 -0
- data/app/assets/javascripts/profile_geodata.coffee +68 -0
- data/app/assets/javascripts/reg_fields_checkup.coffee +96 -0
- data/app/assets/javascripts/registration.coffee +35 -0
- data/app/assets/javascripts/resurrection.coffee +20 -0
- data/app/channels/application_cable/channel.rb +4 -0
- data/app/channels/application_cable/connection.rb +4 -0
- data/app/channels/pills_channel.rb +10 -0
- data/app/controllers/avatars_controller.rb +11 -0
- data/app/controllers/clients_controller.rb +62 -0
- data/app/controllers/email_access_cards_controller.rb +28 -0
- data/app/controllers/geodata_controller.rb +84 -0
- data/app/controllers/nickname_access_cards_controller.rb +30 -0
- data/app/controllers/oauth_controller.rb +178 -0
- data/app/controllers/openid_controller.rb +124 -0
- data/app/controllers/phone_access_cards_controller.rb +28 -0
- data/app/controllers/profile_controller.rb +114 -0
- data/app/controllers/response_controller.rb +17 -0
- data/app/controllers/start_kit_controller.rb +86 -0
- data/app/controllers/user_cards_controller.rb +305 -0
- data/app/jobs/log_analyzer_job.rb +50 -0
- data/app/jobs/password_resurrection_kill_job.rb +9 -0
- data/app/mailers/admin_mailer.rb +9 -0
- data/app/mailers/client_mailer.rb +3 -0
- data/app/mailers/kreator_mailer.rb +9 -0
- data/app/mailers/manager_mailer.rb +9 -0
- data/app/mailers/prometeus_mailer.rb +16 -0
- data/app/mailers/user_cards_mailer.rb +9 -0
- data/app/models/admin.rb +3 -0
- data/app/models/avatar.rb +23 -0
- data/app/models/city.rb +7 -0
- data/app/models/client.rb +31 -0
- data/app/models/country.rb +7 -0
- data/app/models/delayed_job.rb +20 -0
- data/app/models/email_access_card.rb +30 -0
- data/app/models/kreator.rb +3 -0
- data/app/models/log_error.rb +56 -0
- data/app/models/log_error_type.rb +3 -0
- data/app/models/manager.rb +3 -0
- data/app/models/nickname_access_card.rb +18 -0
- data/app/models/oauth_access_card.rb +38 -0
- data/app/models/phone_access_card.rb +19 -0
- data/app/models/prometeus.rb +50 -0
- data/app/models/user_card.rb +158 -0
- data/app/views/admin_mailer/greetings_email.html.erb +191 -0
- data/app/views/client_mailer/greetings_email.html.erb +191 -0
- data/app/views/kreator_mailer/greetings_email.html.erb +191 -0
- data/app/views/manager_mailer/greetings_email.html.erb +191 -0
- data/app/views/oauth/verify.slim +1 -0
- data/app/views/profile/_add_avatar.slim +12 -0
- data/app/views/profile/_user_profile.slim +95 -0
- data/app/views/profile/index.slim +12 -0
- data/app/views/user_cards/authorization.slim +72 -0
- data/app/views/user_cards/confirmation_but_access_code.slim +7 -0
- data/app/views/user_cards/confirmation_complete.slim +7 -0
- data/app/views/user_cards/registration.slim +86 -0
- data/app/views/user_cards/resurrection.slim +19 -0
- data/app/views/user_cards/resurrection_but_access_code.slim +7 -0
- data/app/views/user_cards/resurrection_no_access_code.slim +7 -0
- data/app/views/user_cards_mailer/email.html.erb +191 -0
- data/app/views/user_cards_mailer/resurrection.html.erb +191 -0
- data/config/initializers/session_manager.rb +2 -0
- data/config/routes.rb +53 -0
- data/lib/access_control.rb +3 -0
- data/lib/digital_heroes_startkit/engine.rb +25 -0
- data/lib/digital_heroes_startkit/version.rb +3 -0
- data/lib/digital_heroes_startkit.rb +5 -0
- data/lib/generators/digital_heroes_startkit/install_generator.rb +61 -0
- data/lib/generators/project/Capfile +36 -0
- data/lib/generators/project/Procfile +3 -0
- data/lib/generators/project/app/assets/stylesheets/application.scss +16 -0
- data/lib/generators/project/app/assets/stylesheets/base/_auth.scss +37 -0
- data/lib/generators/project/app/assets/stylesheets/base/_buttons.scss +62 -0
- data/lib/generators/project/app/assets/stylesheets/base/_checkbox.scss +71 -0
- data/lib/generators/project/app/assets/stylesheets/base/_datepicker.scss +620 -0
- data/lib/generators/project/app/assets/stylesheets/base/_form.scss +81 -0
- data/lib/generators/project/app/assets/stylesheets/base/_notice.scss +14 -0
- data/lib/generators/project/app/assets/stylesheets/base/_pills.scss +39 -0
- data/lib/generators/project/app/assets/stylesheets/base/_profile.scss +67 -0
- data/lib/generators/project/app/assets/stylesheets/base/_reset.scss +49 -0
- data/lib/generators/project/app/assets/stylesheets/base/_social.scss +52 -0
- data/lib/generators/project/app/assets/stylesheets/base/_user.scss +0 -0
- data/lib/generators/project/app/assets/stylesheets/base/_user_avatar.scss +18 -0
- data/lib/generators/project/app/assets/stylesheets/base/styles.scss.txt +35 -0
- data/lib/generators/project/app/assets/stylesheets/plugins/sumoselect.scss +296 -0
- data/lib/generators/project/app/controllers/application_controller.rb +3 -0
- data/lib/generators/project/app/views/layouts/_counts.html.erb +29 -0
- data/lib/generators/project/app/views/layouts/_footer.slim +6 -0
- data/lib/generators/project/app/views/layouts/_head.slim +7 -0
- data/lib/generators/project/app/views/layouts/_header.slim +47 -0
- data/lib/generators/project/app/views/layouts/_mobile_menu.slim +11 -0
- data/lib/generators/project/app/views/layouts/application.slim +26 -0
- data/lib/generators/project/app/views/layouts/mailer.html.erb +13 -0
- data/lib/generators/project/app/views/layouts/mailer.text.erb +1 -0
- data/lib/generators/project/config/application.access.yml +66 -0
- data/lib/generators/project/config/application.db.yml +5 -0
- data/lib/generators/project/config/application.google.yml +3 -0
- data/lib/generators/project/config/application.oauth.yml +135 -0
- data/lib/generators/project/config/application.robokassa.yml +10 -0
- data/lib/generators/project/config/application.sendgrid.yml +3 -0
- data/lib/generators/project/config/application.telegram.yml +22 -0
- data/lib/generators/project/config/application.yml +28 -0
- data/lib/generators/project/config/cable.yml +6 -0
- data/lib/generators/project/config/capistrano.yml +78 -0
- data/lib/generators/project/config/database.yml +52 -0
- data/lib/generators/project/config/deploy/application.secrets.yml +4 -0
- data/lib/generators/project/config/deploy/domain.crt +92 -0
- data/lib/generators/project/config/deploy/domain.key +51 -0
- data/lib/generators/project/config/deploy/nginx.conf +50 -0
- data/lib/generators/project/config/deploy/production.rb +67 -0
- data/lib/generators/project/config/deploy/secrets.yml +32 -0
- data/lib/generators/project/config/deploy/secrets.yml.enc +1 -0
- data/lib/generators/project/config/deploy/secrets.yml.key +1 -0
- data/lib/generators/project/config/deploy/staging.rb +61 -0
- data/lib/generators/project/config/deploy/virgin_conf/database.yml +42 -0
- data/lib/generators/project/config/deploy/virgin_conf/nginx_site.conf +47 -0
- data/lib/generators/project/config/deploy/virgin_conf/nginx_site_ssl.conf +57 -0
- data/lib/generators/project/config/deploy/virgin_conf/postfix.cf +685 -0
- data/lib/generators/project/config/deploy/virgin_conf/production.rb +67 -0
- data/lib/generators/project/config/deploy/virgin_conf/puma.rb +66 -0
- data/lib/generators/project/config/deploy/virgin_sh/capistrano.sh +18 -0
- data/lib/generators/project/config/deploy/virgin_sh/foreman.sh +19 -0
- data/lib/generators/project/config/deploy/virgin_sh/rvm_install.sh +10 -0
- data/lib/generators/project/config/deploy.rb +377 -0
- data/lib/generators/project/config/environments/development.rb +91 -0
- data/lib/generators/project/config/environments/production.rb +142 -0
- data/lib/generators/project/config/initializers/session_store.rb +3 -0
- data/lib/generators/project/config/locales/ru.yml +444 -0
- data/lib/generators/project/db/migrate/10_create_user_cards.rb +19 -0
- data/lib/generators/project/db/migrate/12_create_email_access_cards.rb +15 -0
- data/lib/generators/project/db/migrate/13_create_nickname_access_cards.rb +15 -0
- data/lib/generators/project/db/migrate/14_create_phone_access_cards.rb +16 -0
- data/lib/generators/project/db/migrate/15_create_oauth_access_cards.rb +19 -0
- data/lib/generators/project/db/migrate/1_create_kreators.rb +9 -0
- data/lib/generators/project/db/migrate/21_create_avatars.rb +12 -0
- data/lib/generators/project/db/migrate/30_create_countries.rb +12 -0
- data/lib/generators/project/db/migrate/32_create_cities.rb +12 -0
- data/lib/generators/project/db/migrate/3_create_admins.rb +9 -0
- data/lib/generators/project/db/migrate/44_add_sessions_table.rb +12 -0
- data/lib/generators/project/db/migrate/4_create_managers.rb +10 -0
- data/lib/generators/project/db/migrate/5_create_clients.rb +17 -0
- data/lib/generators/project/db/migrate/60_create_log_error_types.rb +9 -0
- data/lib/generators/project/db/migrate/61_create_log_errors.rb +12 -0
- data/lib/generators/project/db/migrate/78_create_delayed_jobs.rb +22 -0
- data/lib/generators/project/db/seeds.rb +27 -0
- data/lib/generators/project/geodata/cities.csv +25305 -0
- data/lib/generators/project/geodata/countries.csv +250 -0
- data/lib/generators/project/public/401.html +75 -0
- data/lib/generators/project/public/404.html +67 -0
- data/lib/generators/project/public/422.html +67 -0
- data/lib/generators/project/public/500.html +66 -0
- data/lib/generators/project/public/_receiver.html +10 -0
- data/lib/generators/project/public/apple-touch-icon-precomposed.png +0 -0
- data/lib/generators/project/public/apple-touch-icon.png +0 -0
- data/lib/generators/project/public/favicon.ico +0 -0
- data/lib/generators/project/public/robots.txt +1 -0
- data/lib/happy_birthday.rb +5 -0
- data/lib/link.rb +16 -0
- data/lib/oauth/oauth.rb +72 -0
- data/lib/oauth/oauth_fb.rb +48 -0
- data/lib/oauth/oauth_gg.rb +50 -0
- data/lib/oauth/oauth_im.rb +51 -0
- data/lib/oauth/oauth_mr.rb +53 -0
- data/lib/oauth/oauth_vk.rb +3 -0
- data/lib/oauth/oauth_yx.rb +51 -0
- data/lib/openid/openid.rb +46 -0
- data/lib/openid/openid_st.rb +2 -0
- data/lib/phone_cutter.rb +9 -0
- data/lib/response.rb +51 -0
- data/lib/session_manager.rb +47 -0
- data/lib/sms_lib.rb +30 -0
- data/lib/social_networks.rb +328 -0
- data/lib/tasks/digital_heroes_startkit_tasks.rake +83 -0
- data/lib/telegram.rb +33 -0
- metadata +497 -0
@@ -0,0 +1,191 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html style="width:100%;font-family:arial, 'helvetica neue', helvetica, sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;padding:0;Margin:0;">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta content="width=device-width, initial-scale=1" name="viewport">
|
6
|
+
<meta name="x-apple-disable-message-reformatting">
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
8
|
+
<meta content="telephone=no" name="format-detection">
|
9
|
+
<title></title>
|
10
|
+
<!--[if (mso 16)]>
|
11
|
+
<style type="text/css">
|
12
|
+
a {text-decoration: none;}
|
13
|
+
</style>
|
14
|
+
<![endif]-->
|
15
|
+
<!--[if gte mso 9]><style>sup { font-size: 100% !important; }</style><![endif]-->
|
16
|
+
<style>
|
17
|
+
@media only screen and (max-width: 600px) {p, ul li, ol li, a { font-size: 16px } h1 { font-size: 30px; text-align: center } h2 { font-size: 26px; text-align: center } h3 { font-size: 20px; text-align: center } h1 a { font-size: 30px } h2 a { font-size: 26px } h3 a { font-size: 20px } .es-menu td a { font-size: 16px !important } .es-header-body p, .es-header-body ul li, .es-header-body ol li, .es-header-body a { font-size: 16px } .es-footer-body p, .es-footer-body ul li, .es-footer-body ol li, .es-footer-body a { font-size: 16 px } .es-infoblock p, .es-infoblock ul li, .es-infoblock ol li, .es-infoblock a { font-size: 12px } *[class="gmail-fix"] { display: none !important } .es-m-txt-c, .es-m-txt-c h1, .es-m-txt-c h2, .es-m-txt-c h3 { text-align: center !important } .es-m-txt-r, .es-m-txt-r h1, .es-m-txt-r h2, .es-m-txt-r h3 { text-align: right !important } .es-m-txt-l, .es-m-txt-l h1, .es-m-txt-l h2, .es-m-txt-l h3 { text-align: left !important } .es-m-txt-r a img, .es-m-txt-c a img, .es-m-txt-l a img { display: inline !important } .es-button-border { display: block !important } .es-button { font-size: 20px !important; display: block !important; border-width: 10px 0px 10px 0px !important } .es-btn-fw { border-width: 10px 0px !important; text-align: center !important } .es-adaptive table, .es-btn-fw, .es-btn-fw-brdr, .es-left, .es-right { width: 100% !important } .es-content table, .es-header table, .es-footer table, .es-content, .es-footer, .es-header { width: 100% !important; max-width: 600px !important } .es-adapt-td { display: block !important; width: 100% !important } .adapt-img { width: 100% !important; height: auto !important } .es-m-p0 { padding: 0px !important } .es-m-p0r { padding-right: 0px !important } .es-m-p0l { padding-left: 0px !important } .es-m-p0t { padding-top: 0px !important } .es-m-p0b { padding-bottom: 0 !important } .es-m-p20b { padding-bottom: 20px !important } .es-hidden { display: none !important } table.es-table-not-adapt, .esd-block-html table { width: auto !important } table.es-social { display: inline-block !important } table.es-social td { display: inline-block !important } }
|
18
|
+
|
19
|
+
</style>
|
20
|
+
<style>
|
21
|
+
#outlook a { padding: 0; } .ExternalClass { width: 100%; } .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div { line-height: 100%; } .es-button { mso-style-priority: 100 !important; text-decoration: none !important; } a[x-apple-data-detectors] { color: inherit !important; text-decoration: none !important; font-size: inherit !important; font-family: inherit !important; font-weight: inherit !important; line-height: inherit !important; } @-ms-viewport { width: device-width; }
|
22
|
+
</style>
|
23
|
+
</head>
|
24
|
+
<body style="width:100%;font-family:arial, 'helvetica neue', helvetica, sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;padding:0;Margin:0;">
|
25
|
+
<div class="es-wrapper-color" style="background-color:rgb(246, 246, 246);">
|
26
|
+
<!--[if gte mso 9]>
|
27
|
+
<v:background xmlns:v="urn:schemas-microsoft-com:vml" fill="t">
|
28
|
+
<v:fill type="tile" src="" color="#f6f6f6"></v:fill>
|
29
|
+
</v:background>
|
30
|
+
<![endif]-->
|
31
|
+
<table cellpadding="0" cellspacing="0" class="es-wrapper" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;padding:0;Margin:0;width:100%;height:100%;background-repeat:repeat;background-position:center top;">
|
32
|
+
<tbody>
|
33
|
+
<tr style="border-collapse:collapse;">
|
34
|
+
<td valign="top" style="padding:0;Margin:0;">
|
35
|
+
<table cellpadding="0" cellspacing="0" class="es-content" align="center" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;table-layout:fixed !important;width:100%;">
|
36
|
+
<tbody>
|
37
|
+
<tr style="border-collapse:collapse;">
|
38
|
+
<td align="center" style="padding:0;Margin:0;">
|
39
|
+
<table class="es-content-body" align="center" cellpadding="0" cellspacing="0" width="600" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;background-color:transparent;">
|
40
|
+
<tbody>
|
41
|
+
<tr style="border-collapse:collapse;">
|
42
|
+
<td class="es-p20t es-p20b es-p20r es-p20l" align="left" style="Margin:0;padding-top:20px;padding-bottom:20px;padding-left:20px;padding-right:20px;">
|
43
|
+
<!--[if mso]><table width="560" cellpadding="0" cellspacing="0"><tr><td width="356" valign="top"><![endif]-->
|
44
|
+
<table cellpadding="0" cellspacing="0" class="es-left" align="left" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;float:left;">
|
45
|
+
<tbody>
|
46
|
+
<tr style="border-collapse:collapse;">
|
47
|
+
<td width="356" class="es-m-p0r es-m-p20b" valign="top" align="center" style="padding:0;Margin:0;">
|
48
|
+
<table cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
49
|
+
<tbody>
|
50
|
+
<tr style="border-collapse:collapse;">
|
51
|
+
<td align="left" class="es-infoblock es-m-txt-c" style="padding:0;Margin:0;line-height:120%;font-size:12px;color:rgb(204, 204, 204);"> <p style="Margin:0;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;mso-line-height-rule:exactly;font-size:24px;font-family:arial, 'helvetica neue', helvetica, sans-serif;line-height:120%;color:rgb(204, 204, 204);"> <%= @domain %> </p></td>
|
52
|
+
</tr>
|
53
|
+
</tbody>
|
54
|
+
</table> </td>
|
55
|
+
</tr>
|
56
|
+
</tbody>
|
57
|
+
</table>
|
58
|
+
<!--[if mso]></td><td width="20"></td><td width="184" valign="top"><![endif]-->
|
59
|
+
<table cellpadding="0" cellspacing="0" align="right" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
60
|
+
<tbody>
|
61
|
+
<tr style="border-collapse:collapse;">
|
62
|
+
<td width="184" align="left" style="padding:0;Margin:0;">
|
63
|
+
<table cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
64
|
+
<tbody>
|
65
|
+
<tr style="border-collapse:collapse;">
|
66
|
+
<td align="center" style="padding:0;Margin:0;display:none;"></td>
|
67
|
+
</tr>
|
68
|
+
</tbody>
|
69
|
+
</table> </td>
|
70
|
+
</tr>
|
71
|
+
</tbody>
|
72
|
+
</table>
|
73
|
+
<!--[if mso]></td></tr></table><![endif]--> </td>
|
74
|
+
</tr>
|
75
|
+
</tbody>
|
76
|
+
</table> </td>
|
77
|
+
</tr>
|
78
|
+
</tbody>
|
79
|
+
</table>
|
80
|
+
<table cellpadding="0" cellspacing="0" class="es-content" align="center" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;table-layout:fixed !important;width:100%;">
|
81
|
+
<tbody>
|
82
|
+
<tr style="border-collapse:collapse;">
|
83
|
+
<td align="center" style="padding:0;Margin:0;">
|
84
|
+
<table bgcolor="#ffffff" class="es-content-body" align="center" cellpadding="0" cellspacing="0" width="600" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;background-color:rgb(255, 255, 255);">
|
85
|
+
<tbody>
|
86
|
+
<tr style="border-collapse:collapse;">
|
87
|
+
<td class="es-p40t es-p20b es-p40r es-p40l" align="left" style="Margin:0;padding-bottom:20px;padding-top:40px;padding-left:40px;padding-right:40px;">
|
88
|
+
<table cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
89
|
+
<tbody>
|
90
|
+
<tr style="border-collapse:collapse;">
|
91
|
+
<td width="520" align="center" valign="top" style="padding:0;Margin:0;">
|
92
|
+
<table cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
93
|
+
<tbody>
|
94
|
+
<tr style="border-collapse:collapse;">
|
95
|
+
<td align="left" class="es-p15t es-p15b" style="padding:0;Margin:0;padding-top:15px;padding-bottom:15px;"><h2 style="Margin:0;line-height:120%;mso-line-height-rule:exactly;font-family:arial, 'helvetica neue', helvetica, sans-serif;font-size:24px;font-style:normal;font-weight:normal;color:rgb(51, 51, 51);"><%= @title %></h2></td>
|
96
|
+
</tr>
|
97
|
+
<tr style="border-collapse:collapse;">
|
98
|
+
<td align="left" class="es-p20t" style="padding:0;Margin:0;padding-top:20px;"><p style="Margin:0;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;mso-line-height-rule:exactly;font-size:14px;font-family:arial, 'helvetica neue', helvetica, sans-serif;line-height:150%;color:rgb(51, 51, 51);"> <%= @text1 %> </p></td>
|
99
|
+
</tr>
|
100
|
+
<tr style="border-collapse:collapse;">
|
101
|
+
<td align="left" class="es-p15t" style="padding:0;Margin:0;padding-top:15px;"><p style="Margin:0;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;mso-line-height-rule:exactly;font-size:14px;font-family:arial, 'helvetica neue', helvetica, sans-serif;line-height:150%;color:rgb(51, 51, 51);"> <%= @text2 %> </p></td>
|
102
|
+
</tr>
|
103
|
+
<tr style="border-collapse:collapse;">
|
104
|
+
<td align="center" class="es-p30t es-p15b es-p10r es-p10l" style="Margin:0;padding-left:10px;padding-right:10px;padding-bottom:15px;padding-top:30px;"> <span class="es-button-border" style="border-style:solid;border-color:rgb(44, 181, 67);background:rgb(219, 55, 39);border-width:0px 0px 2px 0px;display:inline-block;border-radius:4px;width:auto;border-bottom-width:0px;"> <a href="<%= @link %>" class="es-button" target="_blank" style="mso-style-priority:100 !important;text-decoration:none !important;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;mso-line-height-rule:exactly;font-family:arial, 'helvetica neue', helvetica, sans-serif;font-size:14px;color:rgb(255, 255, 255);border-style:solid;border-color:rgb(219, 55, 39);border-width:15px 25px;display:inline-block;background:rgb(219, 55, 39);border-radius:4px;font-weight:normal;font-style:normal;line-height:120%;width:auto;text-align:center;"> <%= @button_text %> </a> </span> </td>
|
105
|
+
</tr>
|
106
|
+
</tbody>
|
107
|
+
</table> </td>
|
108
|
+
</tr>
|
109
|
+
</tbody>
|
110
|
+
</table> </td>
|
111
|
+
</tr>
|
112
|
+
</tbody>
|
113
|
+
</table> </td>
|
114
|
+
</tr>
|
115
|
+
</tbody>
|
116
|
+
</table>
|
117
|
+
<table cellpadding="0" cellspacing="0" class="es-footer" align="center" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;table-layout:fixed !important;width:100%;background-color:transparent;background-repeat:repeat;background-position:center top;">
|
118
|
+
<tbody>
|
119
|
+
<tr style="border-collapse:collapse;">
|
120
|
+
<td align="center" style="padding:0;Margin:0;">
|
121
|
+
<table class="es-footer-body" align="center" cellpadding="0" cellspacing="0" width="600" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;background-color:transparent;">
|
122
|
+
<tbody>
|
123
|
+
<tr style="border-collapse:collapse;">
|
124
|
+
<td class="es-p20t es-p20b es-p20r es-p20l" align="left" style="Margin:0;padding-top:20px;padding-bottom:20px;padding-left:20px;padding-right:20px;">
|
125
|
+
<table cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
126
|
+
<tbody>
|
127
|
+
<tr style="border-collapse:collapse;">
|
128
|
+
<td width="560" align="center" valign="top" style="padding:0;Margin:0;">
|
129
|
+
<table cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
130
|
+
<tbody>
|
131
|
+
<tr style="border-collapse:collapse;">
|
132
|
+
<td align="center" class="es-p10t es-p10b" style="padding:0;Margin:0;padding-top:10px;padding-bottom:10px;"> <p style="Margin:0;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;mso-line-height-rule:exactly;font-size:11px;font-family:arial, 'helvetica neue', helvetica, sans-serif;line-height:150%;color:rgb(51, 51, 51);"></p> </td>
|
133
|
+
</tr>
|
134
|
+
<tr style="border-collapse:collapse;">
|
135
|
+
<td align="center" class="es-p10t es-p10b" style="padding:0;Margin:0;padding-top:10px;padding-bottom:10px;"><p style="Margin:0;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;mso-line-height-rule:exactly;font-size:11px;font-family:arial, 'helvetica neue', helvetica, sans-serif;line-height:150%;color:rgb(51, 51, 51);">© 2018 <%= @domain %> </p></td>
|
136
|
+
</tr>
|
137
|
+
</tbody>
|
138
|
+
</table> </td>
|
139
|
+
</tr>
|
140
|
+
<tr style="border-collapse:collapse;">
|
141
|
+
<td width="560" align="left" style="padding:0;Margin:0;">
|
142
|
+
<table cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
143
|
+
<tbody>
|
144
|
+
<tr style="border-collapse:collapse;">
|
145
|
+
<td align="center" class="es-infoblock es-m-txt-c es-p10t es-p10b" style="padding:0;Margin:0;padding-top:10px;padding-bottom:10px;line-height:120%;font-size:12px;color:rgb(204, 204, 204);"><p style="Margin:0;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;mso-line-height-rule:exactly;font-size:12px;font-family:arial, 'helvetica neue', helvetica, sans-serif;line-height:120%;color:rgb(204, 204, 204);"><a target="_blank" href="http://stripo.email" style="-webkit-text-size-adjust:none;-ms-text-size-adjust:none;mso-line-height-rule:exactly;font-family:arial, 'helvetica neue', helvetica, sans-serif;font-size:12px;text-decoration:underline;color:rgb(44, 181, 67);">Просмотреть в браузере</a></p></td>
|
146
|
+
</tr>
|
147
|
+
</tbody>
|
148
|
+
</table> </td>
|
149
|
+
</tr>
|
150
|
+
</tbody>
|
151
|
+
</table> </td>
|
152
|
+
</tr>
|
153
|
+
</tbody>
|
154
|
+
</table> </td>
|
155
|
+
</tr>
|
156
|
+
</tbody>
|
157
|
+
</table>
|
158
|
+
<table cellpadding="0" cellspacing="0" class="es-content" align="center" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;table-layout:fixed !important;width:100%;">
|
159
|
+
<tbody>
|
160
|
+
<tr style="border-collapse:collapse;">
|
161
|
+
<td align="center" style="padding:0;Margin:0;">
|
162
|
+
<table class="es-content-body" align="center" cellpadding="0" cellspacing="0" width="600" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;background-color:transparent;">
|
163
|
+
<tbody>
|
164
|
+
<tr style="border-collapse:collapse;">
|
165
|
+
<td class="es-p30b es-p20r es-p20l" align="left" style="padding:0;Margin:0;padding-left:20px;padding-right:20px;padding-bottom:30px;">
|
166
|
+
<table cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
167
|
+
<tbody>
|
168
|
+
<tr style="border-collapse:collapse;">
|
169
|
+
<td width="560" align="center" valign="top" style="padding:0;Margin:0;">
|
170
|
+
<table cellpadding="0" cellspacing="0" width="100%" style="mso-table-lspace:0pt;mso-table-rspace:0pt;border-collapse:collapse;border-spacing:0px;">
|
171
|
+
<tbody>
|
172
|
+
<tr style="border-collapse:collapse;">
|
173
|
+
<td align="center" style="padding:0;Margin:0;display:none;"></td>
|
174
|
+
</tr>
|
175
|
+
</tbody>
|
176
|
+
</table> </td>
|
177
|
+
</tr>
|
178
|
+
</tbody>
|
179
|
+
</table> </td>
|
180
|
+
</tr>
|
181
|
+
</tbody>
|
182
|
+
</table> </td>
|
183
|
+
</tr>
|
184
|
+
</tbody>
|
185
|
+
</table> </td>
|
186
|
+
</tr>
|
187
|
+
</tbody>
|
188
|
+
</table>
|
189
|
+
</div>
|
190
|
+
</body>
|
191
|
+
</html>
|
data/config/routes.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
|
3
|
+
# могущественный action cable!
|
4
|
+
mount ActionCable.server => '/cable'
|
5
|
+
|
6
|
+
# админка
|
7
|
+
get 'admin' => 'admin#index'
|
8
|
+
|
9
|
+
# вход и регистрация
|
10
|
+
resources :clients, only: :create
|
11
|
+
get 'authorization' => 'user_cards#authorization'
|
12
|
+
get 'registration' => 'user_cards#registration'
|
13
|
+
|
14
|
+
# oauth2
|
15
|
+
post 'oauth_authorization' => 'oauth#authorize'
|
16
|
+
get 'oauth_verify' => 'oauth#oauth_verify', as: 'oauth_verify'
|
17
|
+
get 'openid_verify' => 'oauth#openid_verify', as: 'openid_verify'
|
18
|
+
|
19
|
+
# профиль
|
20
|
+
get 'profile' => 'profile#index', as: 'profile'
|
21
|
+
post 'profile_update' => 'profile#update'
|
22
|
+
# аватар
|
23
|
+
post 'add_user_avatar' => 'profile#add_avatar'
|
24
|
+
post 'kill_user_avatar' => 'profile#kill_avatar'
|
25
|
+
|
26
|
+
# geodata в профиле
|
27
|
+
post 'geodata_countries' => 'geodata#countries'
|
28
|
+
post 'geodata_cities' => 'geodata#cities'
|
29
|
+
post 'geodata_set_country' => 'geodata#set_country'
|
30
|
+
post 'geodata_set_city' => 'geodata#set_city'
|
31
|
+
|
32
|
+
# проверка логина
|
33
|
+
post 'check_login' => 'user_cards#check_login'
|
34
|
+
# проверка логина по типу
|
35
|
+
post 'check_login_by' => 'user_cards#check_login_by'
|
36
|
+
# просто авторизация
|
37
|
+
post 'login' => 'user_cards#login'
|
38
|
+
# проверка соответствия пароля правилам пароля
|
39
|
+
post 'check_password_line' => 'user_cards#check_password_line'
|
40
|
+
# оффлайн
|
41
|
+
post 'offline' => 'user_cards#offline'
|
42
|
+
# выход
|
43
|
+
get 'logout' => 'user_cards#logout'
|
44
|
+
# восстановление пароля
|
45
|
+
get 'resurrection' => 'user_cards#resurrection'
|
46
|
+
# замена пароля и логин
|
47
|
+
post 'resurrection_password_update' => 'user_cards#resurrection_password_update'
|
48
|
+
# сброс пароля
|
49
|
+
post 'password_reset' => 'user_cards#password_reset'
|
50
|
+
# подтверждение аккаунта
|
51
|
+
get 'account_confirmation' => 'user_cards#confirmation', as: 'account_confirmation'
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module DigitalHeroesStartkit
|
2
|
+
|
3
|
+
Gem.loaded_specs["digital_heroes_startkit"].dependencies.each do |spec|
|
4
|
+
begin
|
5
|
+
require spec.name unless /capistrano/ =~ spec.name
|
6
|
+
rescue LoadError => error
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'phone_cutter'
|
11
|
+
|
12
|
+
class Engine < ::Rails::Engine
|
13
|
+
# app assets
|
14
|
+
initializer "digital_heroes_startkit.assets.precompile" do |app|
|
15
|
+
app.config.assets.precompile += %w( avatar.coffee )
|
16
|
+
app.config.assets.precompile += %w( profile.coffee )
|
17
|
+
app.config.assets.precompile += %w( registration.coffee )
|
18
|
+
app.config.assets.precompile += %w( reg_fields_checkup.coffee )
|
19
|
+
app.config.assets.precompile += %w( authorization.coffee )
|
20
|
+
app.config.assets.precompile += %w( resurrection.coffee )
|
21
|
+
app.config.assets.precompile += %w( profile_geodata.coffee )
|
22
|
+
app.config.assets.precompile += %w( datepicker.js )
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module DigitalHeroesStartkit
|
2
|
+
require 'thor'
|
3
|
+
require 'thor/group'
|
4
|
+
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
def upload_files
|
9
|
+
p 'upload_files'
|
10
|
+
|
11
|
+
src = File.expand_path('../../project', __FILE__)
|
12
|
+
|
13
|
+
files = [
|
14
|
+
'app/controllers/application_controller.rb',
|
15
|
+
'Capfile',
|
16
|
+
'Procfile',
|
17
|
+
'config/capistrano.yml',
|
18
|
+
'config/deploy.rb',
|
19
|
+
'config/cable.yml',
|
20
|
+
'config/database.yml',
|
21
|
+
'config/application.access.yml',
|
22
|
+
'config/application.db.yml',
|
23
|
+
'config/application.oauth.yml',
|
24
|
+
'config/application.robokassa.yml',
|
25
|
+
'config/application.telegram.yml',
|
26
|
+
'config/application.sendgrid.yml',
|
27
|
+
'config/application.yml',
|
28
|
+
'config/environments/development.rb',
|
29
|
+
'config/environments/production.rb',
|
30
|
+
'config/initializers/session_store.rb',
|
31
|
+
'config/locales/ru.yml'
|
32
|
+
]
|
33
|
+
|
34
|
+
entries = [
|
35
|
+
'app/assets/stylesheets',
|
36
|
+
'app/views/layouts',
|
37
|
+
'config/deploy/virgin_conf',
|
38
|
+
'config/deploy/virgin_sh',
|
39
|
+
'config/deploy',
|
40
|
+
'db',
|
41
|
+
'public',
|
42
|
+
'geodata'
|
43
|
+
]
|
44
|
+
|
45
|
+
files.each do |path|
|
46
|
+
p path
|
47
|
+
FileUtils.cp_r "#{src}/#{path}", path
|
48
|
+
end
|
49
|
+
|
50
|
+
entries.each do |entry|
|
51
|
+
p entry
|
52
|
+
# создание директорий
|
53
|
+
FileUtils.makedirs entry
|
54
|
+
# полная синхронизация
|
55
|
+
FileUtils.copy_entry "#{src}/#{entry}", entry, false, true, true
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Load DSL and set up stages
|
2
|
+
require "capistrano/setup"
|
3
|
+
|
4
|
+
# Include default deployment tasks
|
5
|
+
require "capistrano/deploy"
|
6
|
+
|
7
|
+
# Include tasks from other gems included in your Gemfile
|
8
|
+
#
|
9
|
+
# For documentation on these, see for example:
|
10
|
+
#
|
11
|
+
# https://github.com/capistrano/rvm
|
12
|
+
# https://github.com/capistrano/rbenv
|
13
|
+
# https://github.com/capistrano/chruby
|
14
|
+
# https://github.com/capistrano/bundler
|
15
|
+
# https://github.com/capistrano/rails
|
16
|
+
# https://github.com/capistrano/passenger
|
17
|
+
#
|
18
|
+
require 'capistrano/rails'
|
19
|
+
require 'capistrano/rvm'
|
20
|
+
# require 'capistrano/rbenv'
|
21
|
+
# require 'capistrano/chruby'
|
22
|
+
require 'capistrano/bundler'
|
23
|
+
require 'capistrano/rails/assets'
|
24
|
+
require 'capistrano/rails/migrations'
|
25
|
+
require 'capistrano/nginx'
|
26
|
+
require 'capistrano/puma'
|
27
|
+
require 'capistrano/puma/nginx'
|
28
|
+
require 'capistrano/sitemap_generator'
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
require 'capistrano/scm/git'
|
33
|
+
install_plugin Capistrano::SCM::Git
|
34
|
+
|
35
|
+
# Load custom tasks from `lib/capistrano/tasks` if you have any defined
|
36
|
+
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
|
6
|
+
* vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
+
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
|
10
|
+
* files in this directory. Styles in this file should be added after the last require_* statement.
|
11
|
+
* It is generally better to create a new file per style scope.
|
12
|
+
*
|
13
|
+
*= require styles
|
14
|
+
*= require jquery-ui
|
15
|
+
*= require_self
|
16
|
+
*/
|
@@ -0,0 +1,37 @@
|
|
1
|
+
.user-input {
|
2
|
+
margin: 0 auto;
|
3
|
+
max-width: 380px;
|
4
|
+
input, .btn {
|
5
|
+
margin: 8px 0;
|
6
|
+
}
|
7
|
+
.checkbox-button {
|
8
|
+
margin-top: 16px;
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
.resurrection {
|
13
|
+
position: absolute;
|
14
|
+
top: 0;
|
15
|
+
right: 0;
|
16
|
+
bottom: 0;
|
17
|
+
left: 0;
|
18
|
+
background-color: $lite-grey;
|
19
|
+
img, svg {
|
20
|
+
max-width: 80px;
|
21
|
+
width: 20%;
|
22
|
+
height: auto;
|
23
|
+
}
|
24
|
+
.resurrection__inner {
|
25
|
+
display: table;
|
26
|
+
position: absolute;
|
27
|
+
width: 100%;
|
28
|
+
height: 100%;
|
29
|
+
}
|
30
|
+
.resurrection__message {
|
31
|
+
display: table-cell;
|
32
|
+
vertical-align: middle;
|
33
|
+
}
|
34
|
+
p {
|
35
|
+
margin: 0 0 1em 0;
|
36
|
+
}
|
37
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
// base buttons
|
2
|
+
|
3
|
+
.btn {
|
4
|
+
display: inline-block;
|
5
|
+
padding: 0 1.5em;
|
6
|
+
border-radius: 2px;
|
7
|
+
text-align: center;
|
8
|
+
line-height: 56px;
|
9
|
+
cursor: pointer;
|
10
|
+
transition: box-shadow .125s ease-out;
|
11
|
+
&:hover {
|
12
|
+
@include shadow-lg;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
.btn--submit {
|
17
|
+
background-color: $base-color;
|
18
|
+
color: #fff;
|
19
|
+
}
|
20
|
+
|
21
|
+
.btn--success {
|
22
|
+
background-color: $success;
|
23
|
+
color: #fff;
|
24
|
+
}
|
25
|
+
|
26
|
+
.btn--default {
|
27
|
+
background-color: #fff;
|
28
|
+
color: #333;
|
29
|
+
}
|
30
|
+
|
31
|
+
.btn--default-border {
|
32
|
+
background-color: transparent;
|
33
|
+
color: #333;
|
34
|
+
border: 1px solid rgba(0, 0, 0, 0.15);
|
35
|
+
line-height: 54px;
|
36
|
+
transition: none;
|
37
|
+
transition: color .125s ease-out;
|
38
|
+
transition: border-color .125s ease-out;
|
39
|
+
&:hover {
|
40
|
+
@include shadow-none;
|
41
|
+
border-color: rgba(0, 0, 0, 0.35);
|
42
|
+
color: #000;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
.btn--error {
|
47
|
+
background-color: #222;
|
48
|
+
color: #fff;
|
49
|
+
}
|
50
|
+
|
51
|
+
// variants
|
52
|
+
|
53
|
+
.btn--sm {
|
54
|
+
padding: 0 1em;
|
55
|
+
line-height: 44px;
|
56
|
+
}
|
57
|
+
|
58
|
+
.btn--default-border {
|
59
|
+
&.btn--sm {
|
60
|
+
line-height: 42px;
|
61
|
+
}
|
62
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
.radio-button {
|
2
|
+
line-height: 44px;
|
3
|
+
input[type=radio] {
|
4
|
+
display: none;
|
5
|
+
}
|
6
|
+
input[type=radio]:checked + label:before {
|
7
|
+
background-color: $base-color;
|
8
|
+
border-color: $base-color;
|
9
|
+
background-image: asset-data-url('svg/check.svg');
|
10
|
+
background-position: center;
|
11
|
+
background-repeat: no-repeat;
|
12
|
+
background-size: 50%;
|
13
|
+
}
|
14
|
+
label {
|
15
|
+
cursor: pointer;
|
16
|
+
margin-right: 1em;
|
17
|
+
padding-left: 1.75em;
|
18
|
+
position: relative;
|
19
|
+
&:before {
|
20
|
+
content: '';
|
21
|
+
position: absolute;
|
22
|
+
width: 1em;
|
23
|
+
height: 1em;
|
24
|
+
background-color: white;
|
25
|
+
left: 0;
|
26
|
+
top: 0;
|
27
|
+
border-radius: 2px;
|
28
|
+
}
|
29
|
+
&:hover {
|
30
|
+
&:before {
|
31
|
+
border-color: $base-color;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
.checkbox-button {
|
38
|
+
line-height: 44px;
|
39
|
+
input[type=checkbox] {
|
40
|
+
display: none;
|
41
|
+
}
|
42
|
+
input[type=checkbox]:checked + label:before {
|
43
|
+
background-color: $base-color;
|
44
|
+
border-color: $base-color;
|
45
|
+
background-image: asset-data-url('svg/check.svg');
|
46
|
+
background-position: center;
|
47
|
+
background-repeat: no-repeat;
|
48
|
+
background-size: 50%;
|
49
|
+
}
|
50
|
+
label {
|
51
|
+
cursor: pointer;
|
52
|
+
margin-right: 1em;
|
53
|
+
padding-left: 1.75em;
|
54
|
+
position: relative;
|
55
|
+
&:before {
|
56
|
+
content: '';
|
57
|
+
position: absolute;
|
58
|
+
width: 1em;
|
59
|
+
height: 1em;
|
60
|
+
background-color: white;
|
61
|
+
left: 0;
|
62
|
+
top: 0;
|
63
|
+
border-radius: 2px;
|
64
|
+
}
|
65
|
+
&:hover {
|
66
|
+
&:before {
|
67
|
+
border-color: $base-color;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|