SpontaneousCMS/spontaneous

View on GitHub
lib/spontaneous/permissions.rb

Summary

Maintainability
A
0 mins
Test Coverage
# encoding: UTF-8

require 'securerandom'

module Spontaneous
  module Permissions

    autoload :UserLevel, "spontaneous/permissions/user_level"
    autoload :User, "spontaneous/permissions/user"
    autoload :AccessGroup, "spontaneous/permissions/access_group"
    autoload :AccessKey, "spontaneous/permissions/access_key"

    class << self
      # Convenience shortcut so we can do Permissions[:root]
      def [](level_name)
        UserLevel[level_name]
      end

      def root
        UserLevel.root
      end

      def has_level?(user, level)
        return true unless user
        user.level >= level
      end

      def random_string(length)
        SecureRandom.urlsafe_base64(length)[0...(length)]
      end

      def crypto_hash(string, algorithm = Digest::SHA1)
        algorithm.new.update(string).hexdigest
      end
    end
  end
end