database.yml # dtabase config
users_db.rb # access to users table
books_db.rb # access to book table
- views/
- layout.erb # layout of html view
- main.erb # start up view
- signup.erb # sign up user view
- login.erb # user login view
- logout.erb # user logout view
- user_home.erb # user default home view
- account.erb # setup account view
- list.erb # list of books view
- search.erb # search books view
- detail.erb # detail of book parameter view
- find_isbn.erb # search books parameter with isbn view
- setup.erb # setup book parameter view
+ views/ # views
+ layout.haml # layout of html view
+ main.haml # start up view
+ signup.haml # sign up user view
+ login.haml # user login view
+ logout.haml # user logout view
+ user_home.haml # user default home view
+ account.haml # setup account view
+ list.haml # list of books view
+ search.haml # search books view
+ detail.haml # detail of book parameter view
+ find_isbn.haml # search books parameter with isbn view
+ setup.haml # setup book parameter view
```
+## テーブル設計
+
+### ユーザ管理テーブル (users)
+
+| 項番 | カラム名 | 型 | 属性 | 概要 |
+| --: | --- | --- | --- | --- |
+| 1 | user_id | INTEGER | NOT NULL, AUTO_INCREMENT, PRIMARY KEY | ユーザID |
+| 2 | user_name | VARCHAR(10) | NOT NULL, UNIQUE | ユーザ名 |
+| 3 | full_name | VARCHAR(127) | | ユーザフルネーム |
+| 4 | passwd_hash | VARCHA(60) | NOT NULL | パスワードハッシュ |
+| 5 | passwd_salt | VARCHA(60) | NOT NULL | パスワードSALT |
+| 6 | email | VARCHAR(127) | NOT NULL | Eメールアドレス |
+| 7 | role | INTEGER | NOT NULL | 権限 |
+| 8 | create_at | DATETIME | NOT NULL | 登録日時 |
+| 9 | update_at | DATETIME | NOT NULL | 更新日時 |
+
+### 書籍管理テーブル (books)
+
+| 項番 | カラム名 | 型 | 属性 | 概要 |
+| --: | --- | --- | --- | --- |
+| 1 | isbn | VARCHAR(14) | NOT NULL | ISBNコード |
+| 2 | title | VARCHAR(255) | NOT NULL | 書名 |
+| 3 | volume | INTEGER | | 巻数 |
+| 4 | author | VARCHAR(127) | | 著者名 |
+| 5 | orignal_author | VARCHAR(127) | | 原著者 |
+| 6 | translator | VARCHAR(127) | | 翻訳者 |
+| 7 | publisher | VARCHAR(127) | | 出版社 |
+| 8 | summary | VARCHAR(511) | | 概要 |
+| 9 | book_shadow | BLOB | | 書影 |
+| 10 | user_id | INTEGER | NOT NULL | ユーザID |
+| 11 | rank | INTEGER | | 評価
+| 12 | creat_at | DATETIME | NOT NULL | 登録日時 |
+| 13 | update_at | DATETIME | NOT NULL | 更新日時 |
+
+注: isdn + user_id で複合キーとする。
class UserAccount
# ユーザロール
- ROLE_AUTH = 0 #管理者権限
+ ROLE_ADMIN = 0 #管理者権限
ROLE_NORMAL = 8 #一般権限
- # 認証エラー
+ # ユーザ認証エラー
class AuthenticationError < SecurityError
end
- # すでに存在している
+ # 対象のユーザがすでに存在している
class AlreadyInstanceError < StandardError
end
- # 存在していない
- class NotfondInstanceError < StandardError
+ # 対象ã\81®ã\83¦ã\83¼ã\82¶ã\81\8cå\98å\9c¨ã\81\97ã\81¦ã\81\84ã\81ªã\81\84
+ class NotFoundInstanceError < StandardError
end
# DBアクセス失敗
# @param [String] name ユーザ名
# @param [String] passwd パスワード
# @return [Integer] 認証されたユーザID
- # @raise [NotfoundInstanceError] ユーザ情報の取得に失敗
- # @raise [AutenticationError] 認証失敗
+ # @raise [NotFoundInstanceError] ユーザ情報の取得に失敗
+ # @raise [AuthenticationError] 認証失敗
def self.checkPasswd(name, passwd)
user = User.find_by(user_name: name)
# ユーザの有無をチェック
if (user == nil)
- raise NotfondInstanceError
+ raise NotFoundInstanceError
end
# パスワードハッシュを取得
# ユーザ情報取得
# @param [Integer] id 対象ユーザID
# @return [User] ユーザ情報
- # @raise [NotfoundInstanceError] ユーザ情報の取得に失敗
+ # @raise [NotFoundInstanceError] ユーザ情報の取得に失敗
def self.getUser(id)
user = User.find_by(user_id: id)
if (user == nil)
- raise NotfondInstanceError
+ raise NotFoundInstanceError
end
return user
end