Académique Documents
Professionnel Documents
Culture Documents
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[FunctionRoles](
[FunctionId] [int] NOT NULL,
[RoleId] [int] NOT NULL,
CONSTRAINT [PK_FunctionRoles] PRIMARY KEY CLUSTERED
(
[FunctionId] ASC,
[RoleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Functions] Script Date:
9/3/2020 9:19:22 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Functions](
[FunctionId] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT
NULL,
[ParentId] [int] NULL,
[BeginGroup] [bit] NULL,
[FormName] [nvarchar](255) NULL,
[FormStyle] [nvarchar](255) NULL,
[FunctionName] [nvarchar](255) NULL,
[Image] [varbinary](max) NULL,
[Menu] [bit] NULL,
[MethodName] [nvarchar](255) NULL,
[Order] [int] NULL,
[Parameter] [nvarchar](255) NULL,
[RibbonStyle] [bit] NULL,
[Status] [bit] NULL,
[Type] [nvarchar](255) NULL,
CONSTRAINT [PK_Functions] PRIMARY KEY CLUSTERED
(
[FunctionId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: Table [dbo].[Roles] Script Date: 9/3/2020
9:19:22 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Roles](
[RoleId] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[RoleName] [nvarchar](255) NULL,
CONSTRAINT [PK_Roles] PRIMARY KEY CLUSTERED
(
[RoleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[UserRoles] Script Date:
9/3/2020 9:19:22 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[UserRoles](
[UserId] [int] NOT NULL,
[RoleId] [int] NOT NULL,
CONSTRAINT [PK_UserRoles] PRIMARY KEY CLUSTERED
(
[UserId] ASC,
[RoleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Users] Script Date: 9/3/2020
9:19:22 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Users](
[UserId] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[FullName] [nvarchar](255) NULL,
[UserName] [nvarchar](50) NOT NULL,
[Password] [nvarchar](255) NULL,
[Status] [bit] NULL,
[DateCreate] [datetime] NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
(
[UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object: Index [IX_Users] Script Date: 9/3/2020
9:19:22 AM ******/
CREATE UNIQUE NONCLUSTERED INDEX [IX_Users] ON [dbo].[Users]
(
[UserName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING
= OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FunctionRoles] WITH CHECK ADD CONSTRAINT
[FK_FunctionRoles_Functions] FOREIGN KEY([FunctionId])
REFERENCES [dbo].[Functions] ([FunctionId])
GO
ALTER TABLE [dbo].[FunctionRoles] CHECK CONSTRAINT
[FK_FunctionRoles_Functions]
GO
ALTER TABLE [dbo].[FunctionRoles] WITH CHECK ADD CONSTRAINT
[FK_FunctionRoles_Roles] FOREIGN KEY([RoleId])
REFERENCES [dbo].[Roles] ([RoleId])
GO
ALTER TABLE [dbo].[FunctionRoles] CHECK CONSTRAINT
[FK_FunctionRoles_Roles]
GO
ALTER TABLE [dbo].[UserRoles] WITH CHECK ADD CONSTRAINT
[FK_UserRoles_Roles] FOREIGN KEY([RoleId])
REFERENCES [dbo].[Roles] ([RoleId])
GO
ALTER TABLE [dbo].[UserRoles] CHECK CONSTRAINT
[FK_UserRoles_Roles]
GO
ALTER TABLE [dbo].[UserRoles] WITH CHECK ADD CONSTRAINT
[FK_UserRoles_Users] FOREIGN KEY([UserId])
REFERENCES [dbo].[Users] ([UserId])
GO
ALTER TABLE [dbo].[UserRoles] CHECK CONSTRAINT
[FK_UserRoles_Users]
namespace FoxApp.UI.Forms.Systems
{
public partial class frmUserRoles :
DevExpress.XtraEditors.XtraForm
{
private readonly IUnitOfWork _unitOfWork;
private User _user;
public frmUserRoles(User user, IUnitOfWork unitOfWork)
{
InitializeComponent();
_user = user;
_unitOfWork = unitOfWork;
}
private async void frmUserRoles_Load(object sender,
EventArgs e)
{
gridControl.DataSource = await
_unitOfWork.Role.GetListAsync();
for (int i = 0; i < gridView.DataRowCount; i++)
{
Role role = gridView.GetRow(i) as Role;
if (role != null)
{
if (_user.Roles.Where(r => r.RoleId ==
role.RoleId).Count() > 0)
gridView.SelectRow(i);
}
}
}
private async void btnSave_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
try
{
WaitFormHelper.ShowWaitForm(this);
gridView.FocusedRowHandle = -1;
for (int i = 0; i < gridView.DataRowCount; i++)
{
if (gridView.IsRowSelected(i))
{
Role role = gridView.GetRow(i) as Role;
if (role != null)
{
if (!role.Users.Contains(_user))
role.Users.Add(_user);
}
}
else
{
Role role = gridView.GetRow(i) as Role;
if (role != null)
{
if (role.Users.Contains(_user))
role.Users.Remove(_user);
}
}
}
await _unitOfWork.Role.SaveChangesAsync();
WaitFormHelper.SetWaitFormCaption(this, "Your
data has been saved successfully.");
}
catch (Exception ex)
{
WaitFormHelper.CloseWaitForm(this);
XtraMessageBox.Show(ex.Message, "Message",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
WaitFormHelper.CloseWaitForm(this);
}
Cursor.Current = Cursors.Default;
}
}
}
//Init ComponentModel
((System.ComponentModel.ISupportInitialize)
(frmMain.Instance.ribbon)).BeginInit();
//Init Image
frmMain.Instance.ribbon.LargeImages =
frmMain.Instance.LimageCollection;
frmMain.Instance.LimageCollection.Images.Clear();
frmMain.Instance.SimageCollection.Images.Clear();
//Init
if (user != null)
//Init Function
{
if (!list.Contains(f))
list.Add(f);
//
//Add Page
frmMain.Instance.ribbon.Pages.Add(rPage);
//Add PageGroup
rPage.Groups.Add(rGroup);
if (item.Menu == true)
frmMain.Instance.ribbon.Items.Add(mainMenu);
if (item.Image != null)
if (item.RibbonStyle == true)
frmMain.Instance.SimageCollection.AddImage(DataConvert.ByteArra
yToImage(item.Image));
else
frmMain.Instance.LimageCollection.AddImage(DataConvert.ByteArra
yToImage(item.Image));
if
(frmMain.Instance.SimageCollection.Images.Count > 0 &&
item.RibbonStyle == true)
{
mainMenu.ImageIndex = sIndex;
sIndex++;
mainMenu.RibbonStyle =
RibbonItemStyles.SmallWithoutText |
RibbonItemStyles.SmallWithText;
else
mainMenu.LargeImageIndex =
lIndex;
lIndex++;
mainMenu.RibbonStyle =
RibbonItemStyles.All;
if (menu.Menu == true)
frmMain.Instance.ribbon.Items.Add(subMenu);
//Add image
if (sMenu.Image != null)
frmMain.Instance.SimageCollection.AddImage(DataConvert.ByteArra
yToImage(sMenu.Image));
if
(frmMain.Instance.SimageCollection.Images.Count > 0 &&
sMenu.Image != null)
bItem.ImageIndex =
sIndex;
sIndex++;
bItem.ItemClick +=
ItemClick;
bItem.RibbonStyle =
RibbonItemStyles.All;
subMenu.LinksPersistInfo.Add(new LinkPersistInfo(bItem,
sMenu.BeginGroup ?? false));
frmMain.Instance.ribbon.Items.Add(bItem);
mainMenu.ItemLinks.Add(subMenu,
menu.BeginGroup ?? false);
else
//Add image
if (menu.Image != null)
frmMain.Instance.SimageCollection.AddImage(DataConvert.ByteArra
yToImage(menu.Image));
bItem.RibbonStyle =
RibbonItemStyles.All;
if
(frmMain.Instance.SimageCollection.Images.Count > 0 &&
menu.Image != null)
bItem.ImageIndex = sIndex;
sIndex++;
mainMenu.LinksPersistInfo.Add(new LinkPersistInfo(bItem,
menu.BeginGroup ?? false));
frmMain.Instance.ribbon.Items.Add(bItem);
rGroup.ItemLinks.Add(mainMenu, true);
else
if (item.Image != null)
if (item.RibbonStyle == true)
frmMain.Instance.SimageCollection.AddImage(DataConvert.ByteArra
yToImage(item.Image));
else
frmMain.Instance.LimageCollection.AddImage(DataConvert.ByteArra
yToImage(item.Image));
bItem.ItemClick += ItemClick;
if (item.Image != null)
if
(frmMain.Instance.SimageCollection.Images.Count > 0 &&
item.RibbonStyle == true)
bItem.ImageIndex = sIndex;
sIndex++;
bItem.RibbonStyle =
RibbonItemStyles.SmallWithoutText |
RibbonItemStyles.SmallWithText;
rGroup.ItemLinks.Add(bItem,
item.BeginGroup ?? false);
else
{
bItem.LargeImageIndex = lIndex;
lIndex++;
bItem.RibbonStyle =
RibbonItemStyles.All;
rGroup.ItemLinks.Add(bItem,
item.BeginGroup ?? false);
else
bItem.RibbonStyle =
RibbonItemStyles.All;
rGroup.ItemLinks.Add(bItem,
item.BeginGroup ?? false);
frmMain.Instance.ribbon.Items.Add(bItem);
//Add more
//
((System.ComponentModel.ISupportInitialize)
(frmMain.Instance.ribbon)).EndInit();
Nous allons lire les fonctionnalités de la base de données, puis initialiser l’application
en fonction des rôles spécifiés.
À travers cet article, j’ai présenté les bases de la gestion des utilisateurs et des
systèmes d’authentification. Vous pouvez acheter le code source pour l’apprendre ou
l’intégrer dans votre propre système. Il s’agit d’un système qui facilite
l’authentification et la gestion des utilisateurs.