oxen 0.0.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 +28 -0
- data/Rakefile +34 -0
- data/app/assets/config/oxen_manifest.js +2 -0
- data/app/assets/javascripts/oxen/accounts.js +2 -0
- data/app/assets/javascripts/oxen/application.js +16 -0
- data/app/assets/stylesheets/oxen/accounts.css +4 -0
- data/app/assets/stylesheets/oxen/application.scss +6 -0
- data/app/assets/stylesheets/scaffold.css +80 -0
- data/app/controllers/oxen/accounts_controller.rb +86 -0
- data/app/controllers/oxen/application_controller.rb +7 -0
- data/app/controllers/oxen/auth_controller.rb +35 -0
- data/app/helpers/oxen/accounts_helper.rb +4 -0
- data/app/helpers/oxen/application_helper.rb +18 -0
- data/app/helpers/oxen/auth_helper.rb +4 -0
- data/app/jobs/oxen/application_job.rb +4 -0
- data/app/mailers/oxen/application_mailer.rb +6 -0
- data/app/models/oxen/account.rb +32 -0
- data/app/models/oxen/application_record.rb +5 -0
- data/app/views/oxen/accounts/_form.html.slim +29 -0
- data/app/views/oxen/accounts/changepsd.slim +12 -0
- data/app/views/oxen/accounts/edit.html.slim +4 -0
- data/app/views/oxen/accounts/index.html.slim +31 -0
- data/app/views/oxen/accounts/new.html.slim +4 -0
- data/app/views/oxen/accounts/show.html.slim +9 -0
- data/app/views/oxen/auth/login.html.slim +35 -0
- data/config/routes.rb +8 -0
- data/lib/oxen/engine.rb +19 -0
- data/lib/oxen/version.rb +3 -0
- data/lib/oxen.rb +4 -0
- data/lib/tasks/oxen_tasks.rake +4 -0
- metadata +145 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 71813f0499bcf1be30d896a74cd0c72bd1bbdc4e
|
4
|
+
data.tar.gz: f34e4b6f4a4e2943a86bfbefd18bc1b24cc4ba9d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 14ee6cfa9cdee514c0307c107249da906f6792e761dbb8e7bb467fb5fda81d1e5e4659b42ebf0cf27a198c16d5c48e63020a0f5dc3e41d7b9393cf612127302f
|
7
|
+
data.tar.gz: 1087a2d5f74667a1cd44feb6f2de5db961c014b991648426f8e886582338b9bee9106082b29764645aaa384ef9a06676e72b1a2d37b55bdcdc694a82894271f7
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2017 zxy
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# Oxen
|
2
|
+
Short description and motivation.
|
3
|
+
|
4
|
+
## Usage
|
5
|
+
How to use my plugin.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'oxen'
|
12
|
+
```
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
```bash
|
16
|
+
$ bundle
|
17
|
+
```
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
```bash
|
21
|
+
$ gem install oxen
|
22
|
+
```
|
23
|
+
|
24
|
+
## Contributing
|
25
|
+
Contribution directions go here.
|
26
|
+
|
27
|
+
## License
|
28
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Oxen'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.md')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
load 'rails/tasks/statistics.rake'
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
require 'bundler/gem_tasks'
|
24
|
+
|
25
|
+
require 'rake/testtask'
|
26
|
+
|
27
|
+
Rake::TestTask.new(:test) do |t|
|
28
|
+
t.libs << 'test'
|
29
|
+
t.pattern = 'test/**/*_test.rb'
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
task default: :test
|
@@ -0,0 +1,16 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file. JavaScript code in this file should be added after the last require_* statement.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
//= require bootstrap-sprockets
|
16
|
+
//= require_tree .
|
@@ -0,0 +1,80 @@
|
|
1
|
+
body {
|
2
|
+
background-color: #fff;
|
3
|
+
color: #333;
|
4
|
+
margin: 33px;
|
5
|
+
}
|
6
|
+
|
7
|
+
body, p, ol, ul, td {
|
8
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
9
|
+
font-size: 13px;
|
10
|
+
line-height: 18px;
|
11
|
+
}
|
12
|
+
|
13
|
+
pre {
|
14
|
+
background-color: #eee;
|
15
|
+
padding: 10px;
|
16
|
+
font-size: 11px;
|
17
|
+
}
|
18
|
+
|
19
|
+
a {
|
20
|
+
color: #000;
|
21
|
+
}
|
22
|
+
|
23
|
+
a:visited {
|
24
|
+
color: #666;
|
25
|
+
}
|
26
|
+
|
27
|
+
a:hover {
|
28
|
+
color: #fff;
|
29
|
+
background-color: #000;
|
30
|
+
}
|
31
|
+
|
32
|
+
th {
|
33
|
+
padding-bottom: 5px;
|
34
|
+
}
|
35
|
+
|
36
|
+
td {
|
37
|
+
padding: 0 5px 7px;
|
38
|
+
}
|
39
|
+
|
40
|
+
div.field,
|
41
|
+
div.actions {
|
42
|
+
margin-bottom: 10px;
|
43
|
+
}
|
44
|
+
|
45
|
+
#notice {
|
46
|
+
color: green;
|
47
|
+
}
|
48
|
+
|
49
|
+
.field_with_errors {
|
50
|
+
padding: 2px;
|
51
|
+
background-color: red;
|
52
|
+
display: table;
|
53
|
+
}
|
54
|
+
|
55
|
+
#error_explanation {
|
56
|
+
width: 450px;
|
57
|
+
border: 2px solid red;
|
58
|
+
padding: 7px 7px 0;
|
59
|
+
margin-bottom: 20px;
|
60
|
+
background-color: #f0f0f0;
|
61
|
+
}
|
62
|
+
|
63
|
+
#error_explanation h2 {
|
64
|
+
text-align: left;
|
65
|
+
font-weight: bold;
|
66
|
+
padding: 5px 5px 5px 15px;
|
67
|
+
font-size: 12px;
|
68
|
+
margin: -7px -7px 0;
|
69
|
+
background-color: #c00;
|
70
|
+
color: #fff;
|
71
|
+
}
|
72
|
+
|
73
|
+
#error_explanation ul li {
|
74
|
+
font-size: 12px;
|
75
|
+
list-style: square;
|
76
|
+
}
|
77
|
+
|
78
|
+
label {
|
79
|
+
display: block;
|
80
|
+
}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require_dependency "oxen/application_controller"
|
2
|
+
|
3
|
+
module Oxen
|
4
|
+
class AccountsController < ApplicationController
|
5
|
+
before_action :need_login
|
6
|
+
before_action :need_root, except: [:changepsd]
|
7
|
+
before_action :set_account, only: [:show, :edit, :update, :destroy]
|
8
|
+
before_action :pageit, only: [:index, :search]
|
9
|
+
before_action :is_root?, only: [:destory]
|
10
|
+
|
11
|
+
def changepsd
|
12
|
+
@user = Account.where(login: session[:login]).first
|
13
|
+
render :changepsd and return if request.method == "GET"
|
14
|
+
if params[:password] == params[:password_confirmation] and !params[:password].blank?
|
15
|
+
@user.password = params[:password]
|
16
|
+
if @user.save
|
17
|
+
flash[:notice] = "更新成功"
|
18
|
+
redirect_to main_app.root_path and return
|
19
|
+
else
|
20
|
+
flash[:alert] = "更新失败"
|
21
|
+
redirect_to main_app.root_path and return
|
22
|
+
end
|
23
|
+
else
|
24
|
+
flash[:alert] = "信息不一致"
|
25
|
+
redirect_to changepsd_path and return
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# GET /accounts
|
30
|
+
def index
|
31
|
+
@accounts = Account.page params[:page]
|
32
|
+
end
|
33
|
+
|
34
|
+
# GET /accounts/1
|
35
|
+
def show
|
36
|
+
end
|
37
|
+
|
38
|
+
# GET /accounts/new
|
39
|
+
def new
|
40
|
+
@account = Account.new
|
41
|
+
end
|
42
|
+
|
43
|
+
# GET /accounts/1/edit
|
44
|
+
def edit
|
45
|
+
end
|
46
|
+
|
47
|
+
# POST /accounts
|
48
|
+
def create
|
49
|
+
@account = Account.new(account_params)
|
50
|
+
|
51
|
+
if @account.save
|
52
|
+
redirect_to @account, notice: '帐号创建成功.'
|
53
|
+
else
|
54
|
+
render :new
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# PATCH/PUT /accounts/1
|
59
|
+
def update
|
60
|
+
if @account.update(account_params)
|
61
|
+
redirect_to @account, notice: '帐号更新成功'
|
62
|
+
else
|
63
|
+
render :edit
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# DELETE /accounts/1
|
68
|
+
def destroy
|
69
|
+
@account.destroy
|
70
|
+
redirect_to accounts_url, notice: '帐号已经删除.'
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
# Use callbacks to share common setup or constraints between actions.
|
75
|
+
def set_account
|
76
|
+
@account = Account.find(params[:id])
|
77
|
+
end
|
78
|
+
|
79
|
+
# Only allow a trusted parameter "white list" through.
|
80
|
+
def account_params
|
81
|
+
params.require(:account).permit(:login, :password, :tags_list, :avatar).tap do |account|
|
82
|
+
account[:avatar] = attachit("account",:avatar,width: 64)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_dependency "oxen/application_controller"
|
2
|
+
require "digest"
|
3
|
+
|
4
|
+
module Oxen
|
5
|
+
class AuthController < ApplicationController
|
6
|
+
def auth
|
7
|
+
unless verify_rucaptcha?
|
8
|
+
flash[:alert] = "验证码出错"
|
9
|
+
redirect_to login_path and return
|
10
|
+
end
|
11
|
+
|
12
|
+
login = params[:login]
|
13
|
+
psd = params[:password]
|
14
|
+
hsh_psd = Digest::SHA2.hexdigest(psd)
|
15
|
+
ac = Account.where(login: login,hashed_password: hsh_psd).first
|
16
|
+
if ac
|
17
|
+
session[:login] = login
|
18
|
+
flash[:notice] = "登录成功"
|
19
|
+
redirect_to main_app.root_path and return
|
20
|
+
else
|
21
|
+
flash[:alert] = "登录失败"
|
22
|
+
redirect_to login_path and return
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def login
|
27
|
+
end
|
28
|
+
|
29
|
+
def logout
|
30
|
+
reset_session
|
31
|
+
flash[:notice] = "成功退出"
|
32
|
+
redirect_to main_app.root_path
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Oxen
|
2
|
+
module ApplicationHelper
|
3
|
+
def is_login?
|
4
|
+
!!session[:login]
|
5
|
+
end
|
6
|
+
|
7
|
+
def need_login
|
8
|
+
unless is_login?
|
9
|
+
flash[:alert] = "需要登录"
|
10
|
+
redirect_to login_path and return
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def is_root?
|
15
|
+
session[:login] == "root"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Oxen
|
2
|
+
class Account
|
3
|
+
include Mongoid::Document
|
4
|
+
include Mongoid::Timestamps
|
5
|
+
include ::Plug::Mixin
|
6
|
+
array_attr :tags
|
7
|
+
attr_accessor :password
|
8
|
+
field :login, type: String
|
9
|
+
field :tags, type: Array
|
10
|
+
field :hashed_password, type: String
|
11
|
+
field :avatar, type: Hash
|
12
|
+
|
13
|
+
default_scope -> {where(:login.ne => "root")}
|
14
|
+
|
15
|
+
attr_readonly :login
|
16
|
+
|
17
|
+
validates :login, :password, presence: true
|
18
|
+
validates :login, uniqueness: true
|
19
|
+
validates :password, confirmation: true
|
20
|
+
validates :password, length: { minimum: 6 , message: "密码太短"}
|
21
|
+
before_save :hashit
|
22
|
+
|
23
|
+
after_destroy :remove_avatar
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def hashit
|
28
|
+
self.hashed_password = Digest::SHA2.hexdigest(self.password)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
= form_for @account do |f|
|
2
|
+
- if @account.errors.any?
|
3
|
+
#error_explanation
|
4
|
+
h2 = "#{pluralize(@account.errors.count, "error")} prohibited this account from being saved:"
|
5
|
+
ul
|
6
|
+
- @account.errors.full_messages.each do |message|
|
7
|
+
li = message
|
8
|
+
|
9
|
+
- if params[:action] != "edit"
|
10
|
+
.form-group
|
11
|
+
= f.label :帐号
|
12
|
+
= f.text_field :login, class: "form-control"
|
13
|
+
.form-group
|
14
|
+
= f.label :密码
|
15
|
+
= f.password_field :password, class: "form-control"
|
16
|
+
.form-group
|
17
|
+
= f.label :密码确认
|
18
|
+
= f.password_field :password_confirmation, class: "form-control"
|
19
|
+
|
20
|
+
.form-group
|
21
|
+
= f.label :标签
|
22
|
+
= f.text_field :tags_list, class: "form-control"
|
23
|
+
|
24
|
+
.form-group
|
25
|
+
= f.label :头像
|
26
|
+
= f.file_field :avatar, class: "form-control"
|
27
|
+
|
28
|
+
p.actions
|
29
|
+
= f.submit "提交", class: "btn btn-primary"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
h2 align="center"
|
2
|
+
= icon("user","修改密码#{session[:login]}")
|
3
|
+
.container
|
4
|
+
.row
|
5
|
+
.col-md-4.col-md-offset-4
|
6
|
+
= form_tag changepsd_path,method: "post",class: " panel panel-default form-horizontal" do
|
7
|
+
.panel-body
|
8
|
+
label 新密码:
|
9
|
+
p: input type="password" name="password" class="form-control"
|
10
|
+
label 确认密码:
|
11
|
+
p: input type="password" name="password_confirmation" class="form-control"
|
12
|
+
p =<> submit_tag "修改密码", class: "btn btn-primary "
|
@@ -0,0 +1,31 @@
|
|
1
|
+
h1.text-center 帐号列表
|
2
|
+
|
3
|
+
table.table.table-striped.table-hover.table-bordered
|
4
|
+
thead
|
5
|
+
tr
|
6
|
+
th
|
7
|
+
th 登录名
|
8
|
+
th 标签
|
9
|
+
th 头像
|
10
|
+
th
|
11
|
+
|
12
|
+
tbody
|
13
|
+
- @accounts.each do |account|
|
14
|
+
tr
|
15
|
+
td = @num+=1
|
16
|
+
td = account.login
|
17
|
+
td = account.tags_list
|
18
|
+
td
|
19
|
+
- if account.avatar
|
20
|
+
- if account.avatar["content_type"].include?("image")
|
21
|
+
= image_tag(main_app.see_path(account.avatar["grid_id"]))
|
22
|
+
td
|
23
|
+
=<> link_to icon("eye"), account, class: "btn btn-default"
|
24
|
+
- if is_root?
|
25
|
+
=<> link_to icon('edit'), edit_account_path(account), class: "btn btn-default"
|
26
|
+
=<> link_to icon('trash'), account, data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-default"
|
27
|
+
|
28
|
+
br
|
29
|
+
|
30
|
+
= paginate @accounts
|
31
|
+
p = link_to '新建帐号', new_account_path, class: "btn btn-primary"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
h2.text-center =<> icon("user") + ' 登 录'
|
2
|
+
br
|
3
|
+
.row
|
4
|
+
.col-md-4
|
5
|
+
.col-md-4
|
6
|
+
= form_tag auth_path, role: "form", class: "panel panel-default loginForm form-horizontal" do
|
7
|
+
.panel-body
|
8
|
+
strong 登录名
|
9
|
+
br
|
10
|
+
= text_field_tag :login,nil,class: "form-control"
|
11
|
+
br
|
12
|
+
strong 密码:
|
13
|
+
br
|
14
|
+
= password_field_tag :password,nil, class: "form-control"
|
15
|
+
p.text-center
|
16
|
+
a.rucaptcha-image-box href="#" = rucaptcha_image_tag
|
17
|
+
p
|
18
|
+
= rucaptcha_input_tag(class: 'form-control code',placeholder: "输入验证码")
|
19
|
+
.panel-footer
|
20
|
+
= submit_tag '登录', class: "btn-block btn-primary btn"
|
21
|
+
|
22
|
+
javascript:
|
23
|
+
$(".loginForm").submit(function(event){
|
24
|
+
if($("input.code").val()==""){alert("请填写验证码");return false;};
|
25
|
+
if($("input.login").val()==""){alert("登录名不能为空");return false;};
|
26
|
+
if($("input.password").val()==""){alert("密码不能为空");return false;};
|
27
|
+
});
|
28
|
+
$("a.rucaptcha-image-box").click(function(e){
|
29
|
+
e.preventDefault();
|
30
|
+
btn = $(e.currentTarget);
|
31
|
+
img = btn.find('img:first');
|
32
|
+
currentSrc = img.attr('src');
|
33
|
+
img.attr('src', currentSrc.split('?')[0] + '?' + (new Date()).getTime());
|
34
|
+
return false;
|
35
|
+
});
|
data/config/routes.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
Oxen::Engine.routes.draw do
|
2
|
+
post 'auth' => "auth#auth", as: "auth"
|
3
|
+
get 'login' => "auth#login" ,as: "login"
|
4
|
+
get 'logout' => "auth#logout", as: "logout"
|
5
|
+
match 'changepsd' => "accounts#changepsd", as: "changepsd",via: [:get,:post]
|
6
|
+
resources :accounts
|
7
|
+
root to: "accounts#index"
|
8
|
+
end
|
data/lib/oxen/engine.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Oxen
|
2
|
+
class Engine < ::Rails::Engine
|
3
|
+
isolate_namespace Oxen
|
4
|
+
|
5
|
+
initializer 'oxen.mount' do |app|
|
6
|
+
app.routes.preprend do
|
7
|
+
mount Oxen::Engine => "/"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
ActiveSupport.on_load :action_controller do
|
14
|
+
ActionController::Base.include Oxen::ApplicationHelper
|
15
|
+
ActionController::Base.helper_method Oxen::ApplicationHelper
|
16
|
+
end
|
17
|
+
#ActiveSupport.on_load :action_view do
|
18
|
+
# Oxen::ApplicationHelper
|
19
|
+
#end
|
data/lib/oxen/version.rb
ADDED
data/lib/oxen.rb
ADDED
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: oxen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- zxy
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 5.1.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 5.1.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: slim-rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.1.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.1.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mongoid
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 6.1.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 6.1.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: zbox
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.1.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.1.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bootstrap-sass
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 3.3.7
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.3.7
|
83
|
+
description: simple user and account engine
|
84
|
+
email:
|
85
|
+
- zxy@qq.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- MIT-LICENSE
|
91
|
+
- README.md
|
92
|
+
- Rakefile
|
93
|
+
- app/assets/config/oxen_manifest.js
|
94
|
+
- app/assets/javascripts/oxen/accounts.js
|
95
|
+
- app/assets/javascripts/oxen/application.js
|
96
|
+
- app/assets/stylesheets/oxen/accounts.css
|
97
|
+
- app/assets/stylesheets/oxen/application.scss
|
98
|
+
- app/assets/stylesheets/scaffold.css
|
99
|
+
- app/controllers/oxen/accounts_controller.rb
|
100
|
+
- app/controllers/oxen/application_controller.rb
|
101
|
+
- app/controllers/oxen/auth_controller.rb
|
102
|
+
- app/helpers/oxen/accounts_helper.rb
|
103
|
+
- app/helpers/oxen/application_helper.rb
|
104
|
+
- app/helpers/oxen/auth_helper.rb
|
105
|
+
- app/jobs/oxen/application_job.rb
|
106
|
+
- app/mailers/oxen/application_mailer.rb
|
107
|
+
- app/models/oxen/account.rb
|
108
|
+
- app/models/oxen/application_record.rb
|
109
|
+
- app/views/oxen/accounts/_form.html.slim
|
110
|
+
- app/views/oxen/accounts/changepsd.slim
|
111
|
+
- app/views/oxen/accounts/edit.html.slim
|
112
|
+
- app/views/oxen/accounts/index.html.slim
|
113
|
+
- app/views/oxen/accounts/new.html.slim
|
114
|
+
- app/views/oxen/accounts/show.html.slim
|
115
|
+
- app/views/oxen/auth/login.html.slim
|
116
|
+
- config/routes.rb
|
117
|
+
- lib/oxen.rb
|
118
|
+
- lib/oxen/engine.rb
|
119
|
+
- lib/oxen/version.rb
|
120
|
+
- lib/tasks/oxen_tasks.rake
|
121
|
+
homepage: https://www.zapps.online
|
122
|
+
licenses:
|
123
|
+
- MIT
|
124
|
+
metadata: {}
|
125
|
+
post_install_message:
|
126
|
+
rdoc_options: []
|
127
|
+
require_paths:
|
128
|
+
- lib
|
129
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
requirements: []
|
140
|
+
rubyforge_project:
|
141
|
+
rubygems_version: 2.6.8
|
142
|
+
signing_key:
|
143
|
+
specification_version: 4
|
144
|
+
summary: user and account engine.
|
145
|
+
test_files: []
|