Rimmon 4 лет назад
Родитель
Сommit
2dc08114d7
5 измененных файлов с 132 добавлено и 156 удалено
  1. 4 0
      Models/AccountModel.cs
  2. 5 1
      Pages/Blockchains.razor
  3. 17 64
      Pages/Wallet.razor
  4. 47 30
      Pages/Wallet.razor.cs
  5. 59 61
      Shared/Sidebar.razor

+ 4 - 0
Models/AccountModel.cs

@@ -87,6 +87,10 @@ namespace HyperCube.Models
                     var role_id = Convert.ToUInt32(role["role_id"]);
                     AccRole = (Role) role_id;
                     Console.WriteLine($"LoadRoles uuid {UUID} roleid {role_id} AccRole {AccRole}");
+                    if (!Roles.Contains(AccRole))
+                        AddRole(AccRole);
+                    else
+                        RemoveRole(AccRole);
                     //functionId = Convert.ToInt32(role["id"]);
                     //functionName = role["name_with_args"].ToString();
                     //functionCompiledHeader = role["compiled_header"].ToString();

+ 5 - 1
Pages/Blockchains.razor

@@ -57,7 +57,11 @@
     }
 }
 
-<h4>Ethereum dev network</h4>
+<select style="color:green">
+    <option>Ethereum Dev Network</option>
+    <option>Ethereum Test Network</option>
+</select>
+<p></p>
 <p style="visibility:@hidecontr">
     Add smart contract:
 <p><input id="newname" @bind="newname" placeholder="Имя нового контракта" /></p>

+ 17 - 64
Pages/Wallet.razor

@@ -7,72 +7,24 @@
 
 @attribute [Authorize]
 
-@code
-{
-    bool adm = false;
-    bool init = false;
-    bool ver = false;
-    bool req = false;
-    bool admin
-    {
-        get { return adm; }
-        set
-        {
-            adm = value;
-            if (!account.roles.Contains(Models.Role.Admin))
-                account.roles.Add(Models.Role.Admin);
-            else
-                account.roles.Remove(Models.Role.Admin);
-        }
-    }
-    bool initiator
-    {
-        get { return init; }
-        set
+<div class="tabs__content">
+    <div class="tabs__controls">
+        @if (account.Roles.Contains(Role.Admin) || account.Roles.Contains(Role.Initiator))
         {
-            init = value;
-            AccountModel.test = true;
-        if (!account.roles.Contains(Models.Role.Initiator))
-                account.roles.Add(Models.Role.Initiator);
-            else
-                account.roles.Remove(Models.Role.Initiator);
+            <a href="DocEdit" class="tabs__btn">Загрузка материалов</a>
         }
-    }
-    bool verifier
-    {
-        get { return ver; }
-        set
+        @if (account.Roles.Contains(Role.Admin) || account.Roles.Contains(Role.Verifier))
         {
-            ver = value;
-            if (!account.roles.Contains(Models.Role.Verifier))
-                account.roles.Add(Models.Role.Verifier);
-            else
-                account.roles.Remove(Models.Role.Verifier);
+            <a href="Verifying" class="tabs__btn">Верификация</a>
         }
-    }
-    bool requester
-    {
-        get { return req; }
-        set
+        <a class="tabs__btn">Библиотеки</a>
+        @if (account.Roles.Contains(Role.Admin) || account.Roles.Contains(Role.Requester))
         {
-            req = value;
-            if (!account.roles.Contains(Models.Role.Requester))
-                account.roles.Add(Models.Role.Requester);
-            else
-                account.roles.Remove(Models.Role.Requester);
+            <a class="tabs__btn">Заказы</a>
         }
-    }
-}
-
-<div class="tabs__content">
-    <div class="tabs__controls">
-        <a href="DocEdit" class="tabs__btn">Загрузка материалов</a>
-        <a href="Verifying" class="tabs__btn">Верификация</a>
-        <a class="tabs__btn">Библиотеки</a>
-        <a class="tabs__btn">Заказы</a>
-    </div>
+        </div>
     <div class="upload">
-        <h2 class="upload__title">Кошелек @account.roles.Count; @account.Name test @AccountModel.test</h2>
+        <h2 class="upload__title">Кошелек</h2>
     </div>
     <table class="table-bordered" cellspacing="5" cellpadding="5">
         <tbody>
@@ -98,7 +50,7 @@
             </tr>
             <tr>
                 <td>Администратор:</td>
-                <td><input @bind="admin" type="checkbox" name="admin" /></td>
+                <td><input @bind="admin"  type="checkbox" name="admin" /></td>
             </tr>
             <tr>
                 <td>Инициатор:<input @bind="initiator" type="checkbox" name="init" /></td>
@@ -110,11 +62,12 @@
             <tr>
                 <td>Верификатор:<input @bind="requester" type="checkbox" name="vaerify" /></td>
             </tr>
-            <p>
-                @foreach (var role in account.roles)
+            @*<p>
+                @foreach (var role in account.Roles)
                     @role
-
-            </p>
+                <br />
+                @admin
+            </p>*@
         </tbody>
     </table>
 </div>

+ 47 - 30
Pages/Wallet.razor.cs

@@ -1,5 +1,6 @@
 using System.Threading.Tasks;
 using HyperCube.Models;
+using HyperCube;
 
 namespace HyperCube.Pages
 {
@@ -29,6 +30,7 @@ namespace HyperCube.Pages
                 if (acc != null)
                     account = acc;
 
+                account.LoadRoles();
                 //account.AccRole = Role.User;
                 return account;
             }
@@ -36,57 +38,72 @@ namespace HyperCube.Pages
             return null;
         }
 
-        bool adm = false;
-        bool init = false;
-        bool ver = false;
-        bool req = false;
-
         bool admin
         {
-            get { return adm; }
+            get { return account.Roles.Contains(Role.Admin); }
             set
             {
-                adm = value;
-                if (!account.Roles.Contains(Role.Admin))
-                    account.AddRole(Role.Admin);
-                else
-                    account.RemoveRole(Role.Admin);
+                if (!account.Roles.Contains(Role.Admin))
+                {
+                    account.AddRole(Role.Admin);
+                    MySQLConnector.Instance().SQLInsert($"insert into account_roles (account_uuid, role_id) values ('{account.UUID}', {(int)Role.Admin})");
+                }
+                else
+                {
+                    account.RemoveRole(Role.Admin);
+                    MySQLConnector.Instance().SQLInsert($"delete from account_roles where account_uuid = '{account.UUID}' and role_id={(int)Role.Admin}");
+                }
             }
         }
         bool initiator
         {
-            get { return init; }
+            get { return account.Roles.Contains(Role.Initiator); }
             set
-            {
-                init = value;
-                if (!account.Roles.Contains(Role.Initiator))
-                    account.AddRole(Role.Initiator);
-                else
-                    account.RemoveRole(Role.Initiator);
+            {
+                if (!account.Roles.Contains(Role.Initiator))
+                {
+                    account.AddRole(Role.Initiator);
+                    MySQLConnector.Instance().SQLInsert($"insert into account_roles (account_uuid, role_id) values ('{account.UUID}', {(int)Role.Initiator})");
+                }
+                else
+                {
+                    account.RemoveRole(Role.Initiator);
+                    MySQLConnector.Instance().SQLInsert($"delete from account_roles where account_uuid = '{account.UUID}' and role_id={(int)Role.Initiator}");
+                }
             }
         }
         bool verifier
         {
-            get { return ver; }
+            get { return account.Roles.Contains(Role.Verifier); }
             set
             {
-                ver = value;
-                if (!account.Roles.Contains(Role.Verifier))
-                    account.AddRole(Role.Verifier);
-                else
-                    account.RemoveRole(Role.Verifier);
+                if (!account.Roles.Contains(Role.Verifier))
+                {
+                    account.AddRole(Role.Verifier);
+                    MySQLConnector.Instance().SQLInsert($"insert into account_roles (account_uuid, role_id) values ('{account.UUID}', {(int)Role.Verifier})");
+                }
+                else
+                {
+                    account.RemoveRole(Role.Verifier);
+                    MySQLConnector.Instance().SQLInsert($"delete from account_roles where account_uuid = '{account.UUID}' and role_id={(int)Role.Verifier}");
+                }
             }
         }
         bool requester
         {
-            get { return req; }
+            get { return account.Roles.Contains(Role.Requester); }
             set
             {
-                req = value;
-                if (!account.Roles.Contains(Role.Requester))
-                    account.AddRole(Role.Requester);
-                else
-                    account.RemoveRole(Role.Requester);
+                if (!account.Roles.Contains(Role.Requester))
+                {
+                    account.AddRole(Role.Requester);
+                    MySQLConnector.Instance().SQLInsert($"insert into account_roles (account_uuid, role_id) values ('{account.UUID}', {(int)Role.Requester})");
+                }
+                else
+                {
+                    account.RemoveRole(Role.Requester);
+                    MySQLConnector.Instance().SQLInsert($"delete from account_roles where account_uuid = '{account.UUID}' and role_id={(int)Role.Requester}");
+                }
             }
         }
     }

+ 59 - 61
Shared/Sidebar.razor

@@ -1,11 +1,11 @@
-@namespace HyperCube.Models
-@using Microsoft.AspNetCore.Identity;
-@inject AuthenticationStateProvider AuthenticationStateProvider
-@inject UserManager<IdentityUser> UserManager
-
-@attribute [Authorize]
-
-@code
+@namespace HyperCube.Models
+@using Microsoft.AspNetCore.Identity;
+@inject AuthenticationStateProvider AuthenticationStateProvider
+@inject UserManager<IdentityUser> UserManager
+
+@attribute [Authorize]
+
+@code
 { 
     AccountModel account;
     List<Role> roles;
@@ -42,10 +42,10 @@
             var acc = AccountModel.Find(account.UUID);
             if (acc != null)
                 account = acc;
-            ///tmp
+            ///tmp
 
             //account.AccRole = Role.User;
-            account.Name = "test";
+            //account.Name = "test";
             return account;
         }
 
@@ -59,55 +59,53 @@
     }
 
     private async Task Rerender() { StateHasChanged(); }
-}
-<sidebar class="profile-info">
-    <AuthorizeView>
-        <Authorized>
-            <img src="https://place-hold.it/150x150" alt="Фото профиля" class="profile-info__img">
-            <div class="profile-info__list">
-                <div class="profile-info__item">
-                    <div class="profile-info__link">Имя: @context.User.Identity.Name</div>
-                    <div class="profile-info__link">Фамилия: @context.User.Identity.Name</div>
-                </div>
-                <div class="profile-info__item">
-                    <div class="profile-info__link">id 00112</div>
-                </div>
-                <div class="profile-info__item">
-                    @if (account.Roles.Contains(Role.Initiator))
-                    {
-                        <a href="Account" class="profile-info__link">
-                            <img src="img/qual.svg" alt="qual" class="profile-info__link-img">
-                            Квалификация        
-                        </a>
-                    }
-                    <a href="#" class="profile-info__link">
-                        <img src="img/rating.svg" alt="qual" class="profile-info__link-img">
-                        Рейтинги
-                        @account.Roles.Count;
-                        @account.Name;
-                    </a>
-                    <a href="Wallet" class="profile-info__link">
-                        <img src="img/wallet.svg" alt="qual" class="profile-info__link-img">
-                        Кошелек
-                    </a>
-                    <a href="Blockchains" class="profile-info__link">
-                        <img src="img/wallet.svg" alt="qual" class="profile-info__link-img">
-                        Blockchains
-                    </a>
-                </div>
-                <div class="profile-info__item">
-                    <a class="profile-info__link">
-                        <img src="img/exit.svg" alt="qual" class="profile-info__link-img">
-                        <form method="post" action="Identity/Account/LogOut">
-                            <button type="submit" class="nav-link btn btn-link">Выйти</button>
-                        </form>
-                    </a>
-                </div>
-            </div>
-        </Authorized>
-        <NotAuthorized>
-            <a class="profile-info__link" href="Identity/Account/Register">Регистрация</a>
-            <a class="profile-info__link" href="Identity/Account/Login">Вход</a>
-        </NotAuthorized>
-    </AuthorizeView>
+}
+<sidebar class="profile-info">
+    <AuthorizeView>
+        <Authorized>
+            <img src="https://place-hold.it/150x150" alt="Фото профиля" class="profile-info__img">
+            <div class="profile-info__list">
+                <div class="profile-info__item">
+                    <div class="profile-info__link">Имя: @context.User.Identity.Name</div>
+                    <div class="profile-info__link">Фамилия: @context.User.Identity.Name</div>
+                </div>
+                <div class="profile-info__item">
+                    <div class="profile-info__link">id 00112</div>
+                </div>
+                <div class="profile-info__item">
+                    <a href="Account" class="profile-info__link">
+                        <img src="img/qual.svg" alt="qual" class="profile-info__link-img">
+                        Квалификация
+                    </a>
+                    <a href="#" class="profile-info__link">
+                        <img src="img/rating.svg" alt="qual" class="profile-info__link-img">
+                        Рейтинги
+                    </a>
+                    <a href="Wallet" class="profile-info__link">
+                        <img src="img/wallet.svg" alt="qual" class="profile-info__link-img">
+                        Кошелек
+                    </a>
+                    @if (account.Roles.Contains(Role.Admin))
+                    {
+                        <a href="Blockchains" class="profile-info__link">
+                            <img src="img/wallet.svg" alt="qual" class="profile-info__link-img">
+                            Blockchains
+                        </a>
+                    }
+                    </div>
+                <div class="profile-info__item">
+                    <a class="profile-info__link">
+                        <img src="img/exit.svg" alt="qual" class="profile-info__link-img">
+                        <form method="post" action="Identity/Account/LogOut">
+                            <button type="submit" class="nav-link btn btn-link">Выйти</button>
+                        </form>
+                    </a>
+                </div>
+            </div>
+        </Authorized>
+        <NotAuthorized>
+            <a class="profile-info__link" href="Identity/Account/Register">Регистрация</a>
+            <a class="profile-info__link" href="Identity/Account/Login">Вход</a>
+        </NotAuthorized>
+    </AuthorizeView>
 </sidebar>