notee 0.3.7 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/notee/application.js +40107 -38738
  3. data/app/controllers/notee/application_controller.rb +22 -2
  4. data/app/controllers/notee/categories_controller.rb +3 -4
  5. data/app/controllers/notee/comments_controller.rb +34 -11
  6. data/app/controllers/notee/images_controller.rb +3 -4
  7. data/app/controllers/notee/notees_controller.rb +2 -4
  8. data/app/controllers/notee/posts_controller.rb +10 -11
  9. data/app/controllers/notee/roles_controller.rb +27 -0
  10. data/app/controllers/notee/statuses_controller.rb +3 -5
  11. data/app/controllers/notee/tokens_controller.rb +1 -5
  12. data/app/controllers/notee/users_controller.rb +19 -12
  13. data/app/models/notee/application_record.rb +5 -0
  14. data/app/models/notee/category.rb +14 -4
  15. data/app/models/notee/comment.rb +1 -1
  16. data/app/models/notee/image.rb +12 -3
  17. data/app/models/notee/post.rb +28 -2
  18. data/app/models/notee/token.rb +15 -2
  19. data/app/models/notee/user.rb +71 -24
  20. data/app/views/notee/partials/_meta.html.erb +25 -0
  21. data/config/routes.rb +11 -9
  22. data/db/migrate/20160809145754_create_notee_users.rb +0 -1
  23. data/lib/notee/configuration.rb +15 -1
  24. data/lib/notee/helpers/notee_helper.rb +9 -0
  25. data/lib/notee/helpers/view_helper.rb +6 -1
  26. data/lib/notee/version.rb +1 -1
  27. data/lib/tasks/notee_tasks.rake +16 -0
  28. data/test/dummy/log/development.log +63 -0
  29. metadata +20 -8
  30. data/app/helpers/notee/categories_helper.rb +0 -4
  31. data/app/helpers/notee/comments_helper.rb +0 -4
  32. data/app/helpers/notee/images_helper.rb +0 -4
  33. data/app/helpers/notee/posts_helper.rb +0 -4
@@ -2,13 +2,33 @@ module Notee
2
2
  class ApplicationController < ActionController::Base
3
3
  before_action :restrict_access_json
4
4
 
5
+ def restrict_access_json
6
+ return redirect_to new_token_path unless confirm_exist_token
7
+ return redirect_to new_token_path unless confirm_expired_token
8
+ end
9
+
5
10
  private
6
11
 
7
- def restrict_access_json
12
+ def confirm_exist_token
8
13
  unless Token.exists?(access_token: session[:access_token])
9
- raise
14
+ session.delete(:access_token)
15
+ return false
10
16
  end
17
+
18
+ true
11
19
  end
12
20
 
21
+ def confirm_expired_token
22
+ token = Token.find_by(access_token: session[:access_token])
23
+ return false unless token
24
+
25
+ if Time.now > token.expires_at
26
+ token.destroy
27
+ session.delete(:access_token)
28
+ return false
29
+ end
30
+
31
+ true
32
+ end
13
33
  end
14
34
  end
@@ -1,5 +1,5 @@
1
1
 
2
- require_dependency "notee/application_controller"
2
+ require_dependency 'notee/application_controller'
3
3
 
4
4
  module Notee
5
5
  class CategoriesController < ApplicationController
@@ -7,11 +7,11 @@ module Notee
7
7
 
8
8
  def index
9
9
  @categories = Category.all
10
- render json: { status: 'success', categories: @categories}
10
+ render json: { status: 'success', categories: @categories }
11
11
  end
12
12
 
13
13
  def show
14
- render json: { status: 'success', category: @category}
14
+ render json: { status: 'success', category: @category }
15
15
  end
16
16
 
17
17
  def create
@@ -54,6 +54,5 @@ module Notee
54
54
  def set_category
55
55
  @category = Category.find_by(id: params[:id])
56
56
  end
57
-
58
57
  end
59
58
  end
@@ -1,29 +1,52 @@
1
- require_dependency "notee/application_controller"
1
+ require_dependency 'notee/application_controller'
2
2
 
3
3
  module Notee
4
4
  class CommentsController < ApplicationController
5
+ before_action :set_comment, only: [:update, :destroy]
6
+
7
+ def index
8
+ comments = Comment.all.order(updated_at: :desc)
9
+ render json: { status: 'success', comments: comments }
10
+ end
5
11
 
6
12
  def show
7
- @comments = Comment.where(post_id: params[:id]);
8
- render json: { status: 'success', comments: @comments}
13
+ @comments = Comment.where(post_id: params[:id])
14
+ render json: { status: 'success', comments: @comments }
9
15
  end
10
16
 
11
- # POST /comments
12
17
  def create
13
18
  @comment = Comment.new(comment_params)
14
-
15
19
  if @comment.save
16
- render json: { status: 'success'}
20
+ render json: { status: 'success' }
17
21
  else
18
- render json: { status: 'failed'}
22
+ render json: { status: 'failed' }
23
+ end
24
+ end
25
+
26
+ def update
27
+ respond_to do |format|
28
+ if @comment.update(post_params)
29
+ format.json { render json: @comment, status: 200 }
30
+ else
31
+ format.json { render json: @comment.errors, status: :unprocessable_entity }
32
+ end
19
33
  end
20
34
  end
21
35
 
36
+ def destroy
37
+ @comment.destroy
38
+ render json: { status: 'success' }
39
+ end
40
+
22
41
  private
23
42
 
24
- # Only allow a trusted parameter "white list" through.
25
- def comment_params
26
- params.require(:comment).permit(:post_id, :content, :name, :email)
27
- end
43
+ def set_comment
44
+ @comment = Comment.find_by(id: params[:id])
45
+ end
46
+
47
+ # Only allow a trusted parameter "white list" through.
48
+ def comment_params
49
+ params.require(:comment).permit(:post_id, :content, :name, :email)
50
+ end
28
51
  end
29
52
  end
@@ -1,18 +1,18 @@
1
1
 
2
- require_dependency "notee/application_controller"
2
+ require_dependency 'notee/application_controller'
3
3
 
4
4
  module Notee
5
5
  class ImagesController < ApplicationController
6
6
 
7
7
  def index
8
8
  @images = Image.all.order(updated_at: :desc)
9
- render json: { status: 'success', images: @images}
9
+ render json: { status: 'success', images: @images }
10
10
  end
11
11
 
12
12
  def show
13
13
  @image = Image.find_by(content: params[:search_txt].to_s) if params[:search_txt]
14
14
  @image = Image.find_by(id: params[:search_txt].to_i) if params[:search_txt] && !@image
15
- render json: { status: 'success', image: @image}
15
+ render json: { status: 'success', image: @image }
16
16
  end
17
17
 
18
18
  def create
@@ -44,6 +44,5 @@ module Notee
44
44
  def image_params
45
45
  params.require(:image).permit(:title, :content, :slug, :status, :image_id, :thumbnail_id, :published_at, :seo_keyword, :seo_description)
46
46
  end
47
-
48
47
  end
49
48
  end
@@ -1,8 +1,7 @@
1
- require_dependency "notee/application_controller"
1
+ require_dependency 'notee/application_controller'
2
2
 
3
3
  module Notee
4
4
  class NoteesController < ApplicationController
5
-
6
5
  # callbacks
7
6
  skip_before_action :restrict_access_json, only: [:index]
8
7
  before_action :restrict_access, only: [:index]
@@ -18,9 +17,8 @@ module Notee
18
17
  # end
19
18
 
20
19
  unless Token.exists?(access_token: session[:access_token])
21
- redirect_to new_token_path and return
20
+ redirect_to new_token_path
22
21
  end
23
-
24
22
  end
25
23
  end
26
24
  end
@@ -1,15 +1,14 @@
1
- require_dependency "notee/application_controller"
1
+ require_dependency 'notee/application_controller'
2
2
 
3
3
  module Notee
4
4
  class PostsController < ApplicationController
5
-
6
5
  # callbacks
7
6
  before_action :set_post, only: [:show, :update, :destroy]
8
7
 
9
8
  # GET /posts
10
9
  def index
11
10
  @posts = Post.all.order(updated_at: :desc)
12
- render json: { status: 'success', posts: @posts}
11
+ render json: { status: 'success', posts: @posts }
13
12
  end
14
13
 
15
14
  # GET /posts/1
@@ -43,18 +42,18 @@ module Notee
43
42
  # DELETE /posts/1
44
43
  def destroy
45
44
  @post.destroy
46
- render json: { status: 'success'}
45
+ render json: { status: 'success' }
47
46
  end
48
47
 
49
48
  private
50
49
 
51
- def set_post
52
- @post = Post.find_by(id: params[:id])
53
- end
50
+ def set_post
51
+ @post = Post.find_by(id: params[:id])
52
+ end
54
53
 
55
- # Only allow a trusted parameter "white list" through.
56
- def post_params
57
- params.require(:post).permit(:title, :content, :slug, :status, :category_id, :thumbnail_id, :published_at, :seo_keyword, :seo_description, :secret_published_password)
58
- end
54
+ # Only allow a trusted parameter "white list" through.
55
+ def post_params
56
+ params.require(:post).permit(:title, :content, :slug, :status, :category_id, :thumbnail_id, :published_at, :seo_keyword, :seo_description, :secret_published_password)
57
+ end
59
58
  end
60
59
  end
@@ -0,0 +1,27 @@
1
+
2
+ require_dependency 'notee/application_controller'
3
+
4
+ module Notee
5
+ class RolesController < ApplicationController
6
+ def index
7
+ render json: { status: 'success', roles: User.roles }
8
+ end
9
+
10
+ def show
11
+ user = find_user_by_access_token
12
+
13
+ if user
14
+ render json: { status: 'success', user: user }
15
+ else
16
+ render json: { status: 'failed' }
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def find_user_by_access_token
23
+ token = Token.find_by(access_token: session[:access_token])
24
+ token.user
25
+ end
26
+ end
27
+ end
@@ -1,19 +1,17 @@
1
1
 
2
- require_dependency "notee/application_controller"
2
+ require_dependency 'notee/application_controller'
3
3
 
4
4
  module Notee
5
5
  class StatusesController < ApplicationController
6
-
7
6
  def index
8
7
  @statuses = Notee::STATUS
9
- render json: { status: 'success', statuses: @statuses}
8
+ render json: { status: 'success', statuses: @statuses }
10
9
  end
11
10
 
12
11
  def show
13
12
  statuses = Notee::STATUS
14
13
  @status = statuses.key(params[:status].to_i)
15
- render json: { status: 'success', name: @status}
14
+ render json: { status: 'success', name: @status }
16
15
  end
17
-
18
16
  end
19
17
  end
@@ -1,15 +1,13 @@
1
1
 
2
- require_dependency "notee/application_controller"
2
+ require_dependency 'notee/application_controller'
3
3
 
4
4
  module Notee
5
5
  class TokensController < ApplicationController
6
6
  skip_before_filter :restrict_access_json, only: [:new, :create]
7
7
 
8
- # GET /tokens/new
9
8
  def new
10
9
  end
11
10
 
12
- # POST /tokens
13
11
  def create
14
12
  if Notee.notee_id == params[:id] && Notee.notee_password == params[:password]
15
13
  if token = Token.create!
@@ -27,11 +25,9 @@ module Notee
27
25
  redirect_to root_path
28
26
  end
29
27
 
30
- # DELETE /tokens/1
31
28
  def destroy
32
29
  Token.find_by_access_token(session[:access_token]).destroy!
33
30
  session.delete(:access_token)
34
31
  end
35
-
36
32
  end
37
33
  end
@@ -1,25 +1,27 @@
1
- require_dependency "notee/application_controller"
1
+
2
+ require_dependency 'notee/application_controller'
2
3
 
3
4
  module Notee
4
5
  class UsersController < ApplicationController
5
-
6
6
  # callbacks
7
7
  before_action :set_user, only: [:show, :update, :destroy]
8
+ before_action :convert_from_string_to_int, only: [:create, :update]
8
9
 
9
10
  # GET /users
10
11
  def index
11
12
  @users = User.all.order(updated_at: :desc)
12
- render json: { status: 'success', users: @users}
13
+ render json: { status: 'success', users: @users }
13
14
  end
14
15
 
15
16
  # GET /posts/1
16
17
  def show
17
- render json: { status: 'success', user: @user}
18
+ render json: { status: 'success', user: @user }
18
19
  end
19
20
 
20
21
  # POST /posts
21
22
  def create
22
23
  @user = User.new(user_params)
24
+ @user.file = user_params[:profile_img]
23
25
  respond_to do |format|
24
26
  if @user.save
25
27
  format.json { render json: @user, status: 200 }
@@ -31,6 +33,7 @@ module Notee
31
33
 
32
34
  # PATCH/PUT /posts/1
33
35
  def update
36
+ @user.file = user_params[:profile_img]
34
37
  respond_to do |format|
35
38
  if @user.update(user_params)
36
39
  format.json { render json: @user, status: 200 }
@@ -43,18 +46,22 @@ module Notee
43
46
  # DELETE /posts/1
44
47
  def destroy
45
48
  @user.destroy
46
- render json: { status: 'success'}
49
+ render json: { status: 'success' }
47
50
  end
48
51
 
49
52
  private
50
53
 
51
- def set_user
52
- @user = User.find_by(id: params[:id])
53
- end
54
+ def set_user
55
+ @user = User.find_by(id: params[:id])
56
+ end
54
57
 
55
- # Only allow a trusted parameter "white list" through.
56
- def post_params
57
- params.require(:user).permit(:title, :content, :slug, :status, :category_id, :thumbnail_id, :published_at, :seo_keyword, :seo_description, :secret_published_password)
58
- end
58
+ def convert_from_string_to_int
59
+ params[:user][:role] = params[:user][:role].to_i
60
+ end
61
+
62
+ # Only allow a trusted parameter "white list" through.
63
+ def user_params
64
+ params.require(:user).permit(:name, :email, :password, :password_confirm, :profile, :profile_img, :role)
65
+ end
59
66
  end
60
67
  end
@@ -0,0 +1,5 @@
1
+ module Notee
2
+ class ApplicationRecord < ActiveRecord::Base
3
+ self.abstract_class = true
4
+ end
5
+ end
@@ -1,13 +1,24 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: notee_categories
4
+ #
5
+ # id :integer not null, primary key
6
+ # name :string default("category_name"), not null
7
+ # slug :string default("2016-19-26-54"), not null
8
+ # parent_id :integer
9
+ # status :integer default(0), not null
10
+ # created_at :datetime not null
11
+ # updated_at :datetime not null
12
+ #
13
+
1
14
  module Notee
2
15
  class Category < ActiveRecord::Base
3
-
4
16
  # callbacks
5
17
  before_save :set_slug
6
18
  before_destroy :protect_default
7
19
 
8
20
  # relations
9
- has_many :children, class_name: Notee::Category, :foreign_key => 'parent_id', dependent: :destroy
10
-
21
+ has_many :children, class_name: Notee::Category, foreign_key: 'parent_id', dependent: :destroy
11
22
 
12
23
  private
13
24
 
@@ -18,6 +29,5 @@ module Notee
18
29
  def protect_default
19
30
  return false if self.id == 1
20
31
  end
21
-
22
32
  end
23
33
  end
@@ -1,5 +1,5 @@
1
1
  module Notee
2
- class Comment < ApplicationRecord
2
+ class Comment < ActiveRecord::Base
3
3
  validates :post_id, presence: true
4
4
  validates :content, presence: true
5
5
  end
@@ -1,8 +1,17 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: notee_images
4
+ #
5
+ # id :integer not null, primary key
6
+ # content :string not null
7
+ # created_at :datetime not null
8
+ # updated_at :datetime not null
9
+ #
10
+
1
11
  require 'securerandom'
2
12
 
3
13
  module Notee
4
14
  class Image < ActiveRecord::Base
5
-
6
15
  # accessors
7
16
  attr_accessor :file
8
17
 
@@ -11,13 +20,14 @@ module Notee
11
20
  before_destroy :protect_default
12
21
 
13
22
  private
23
+
14
24
  def manage_image
15
25
  return unless self.file
16
26
 
17
27
  image_dir = Rails.root.to_s + "/public/notee"
18
28
  FileUtils.mkdir_p(image_dir) unless FileTest.exist?(image_dir)
19
29
  image_name = Time.now.strftime('%Y%m%d%H%M%S') + '--' + SecureRandom.uuid + '.jpg'
20
- self.transaction do
30
+ transaction do
21
31
  open(image_dir + "/" + image_name, 'wb') do |output|
22
32
  output.write(self.file.read)
23
33
  end
@@ -28,6 +38,5 @@ module Notee
28
38
  def protect_default
29
39
  return false if self.id == 1
30
40
  end
31
-
32
41
  end
33
42
  end