0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

管理者権限の付与(VB.NET)

Last updated at Posted at 2023-04-19

この記事の注意事項

この記事の内容はこちらの記事の開発の続きです。

この記事で実施していること

  • ユーザーごとに管理者権限を付与する機能
  • 管理者権限に応じて、機能を制御する機能

追加機能の仕様

  1. ユーザー情報テーブルに、管理者権限のカラムを追加
  2. 管理者権限に応じて、管理者用の機能を制御する処理を追加
  3. アカウント追加時に、管理者権限を選択できるように機能を追加
  4. アカウント追加時に、管理者権限がDB側に登録されるようにSQLを修正

1. 管理者権限のカラムを追加

SSMSでカラムを追加し、初期データを入力します。データの数にもよりますが、クエリを実行すれば、効率よく、登録できます。
image.png
サンプルコード

Update UserInfo Set admin_flag = 'False';

2. 管理者専用の機能を制御

ユーザーに管理者権限が付与されているかを確認するため、以下のSQLを実装し、実行します。

サンプルコード

SELECT CASE WHEN EXISTS
     (
       SELECT 1 
       FROM USERINFO  
       WHERE user_id = @userID 
       AND admin_flag = 'True' 
     )
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END AS isAdmin

SQLの実行結果に応じて、管理者用の機能の使用を制御しています。
管理者権限がある場合
image.png
管理者権限がない場合
image.png

3. アカウント追加画面に、管理者権限が選択できるようにデザインを修正

単純に、管理者権限を付与できるよう、デザインを修正しただけになります。
image.png

4. アカウント追加時のSQLを修正

アカウント追加時に、管理者権限をふよするために、既存のSQLを修正します。

INSERT INTO UserInfo (id, user_id, password,revoke_count, revoke_flag, admin_flag) 
VALUES (@id, @userID, @password, 0, 'False', @admin_flag); 

注意事項

  • この記事では、SQL Server、SSMS、visual studioを使用しているので、試してみたい方は事前に準備が必要です。
  • 本記事に掲載されているコードは掲載用にサンプルとして掲載しているものです。したがって本記事を参考にし、コーディングを進める場合は作成しているアプリに応じて、各自で判断して、適応してください。
  • 関連する記事の一覧はこちら
    ※参照先のリンクが切れている場合は、トップページから確認してください。

この記事は誰向けの記事か?

  • VB.NETやSQL Serverに触れたことがない人
  • リボークの実装について、一通りの流れを確認したい人

環境

本記事における注意事項

  • 本記事は、備忘録としてまとめたものになります。
  • 他の方の参考になる可能性も踏まえて、一般公開も行なっております。
  • また記載内容はすべて、正しい内容が記載されているとは限りません。
  • 誤った内容を見つけた場合は、ご指摘をお願いいたします。
  • この記事の内容では、一部、ChatGPTを利用しております。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?