PDA

View Full Version : سوال: پیاده سازی سطح دسترسی کاربر



طبیب دل
پنج شنبه 26 آذر 1394, 16:01 عصر
با سلام به دوستان
من تو برنامم تعدادی فرم دارم می خوام دسترسی کاربران به هر فرم توسط مدیر مشخص بشه .
چطور باید پیاده سازی بشه و اینکه هنگام ورود به برنامه چطور مشخص بشه کاربر وارد شده به چه فرمهایی دسترسی داره.؟

البته سرچ کردم ولی به جواب نرسیدم.
با تشکر

ebrahim.rayatparvar
پنج شنبه 26 آذر 1394, 16:55 عصر
یه سرچی تو سایت لرن فایلز بزنید یک آموزش تصویری کامل وجود داره که توسط یکی از کاربران همین انجمن درست شده و به نظر من که کامله برای کار کردن با این روش.

حسین.کاظمی
پنج شنبه 26 آذر 1394, 20:07 عصر
سلام
دوست عزیز از چه روشی و چه معماری کد نویسی کردید؟؟؟؟

vb341
جمعه 27 آذر 1394, 10:07 صبح
من با استفاده از این تابع نحوه دسترسی رو چک میکنم :



//define for user access
public static int UserCode = 0;
public static string UserName = string.Empty;
public static bool UserAdmin = false;
public static bool UserActive = false;

public static bool AccessMenu(string menuName)
{
if (UserAdmin)
{
return true;
}
if (con1.State == ConnectionState.Open)
{
con1.Close();
}


sql = "select * from Table_Users where (UserCode=" + UserCode + ")AND " + menuName + " =1";

cmd = new SqlCommand("select * from Table_Users where (UserCode=" + UserCode + ")AND " + menuName + " =1", con1);

con1.Open();

dr = cmd.ExecuteReader();
if (dr.Read())
{
return true;
}
else
MessageBox.Show("عدم دسترسی کاربر", "خطا در دسترسی", MessageBoxButtons.OK, MessageBoxIcon.Warning);

return false;

}


در هنگام ورود به برنامه از تابع مربوطه به روش زیر استفاده میشه و متغیرهای عمومی مقدار دهی میشوند



private void buttonX1_Click(object sender, EventArgs e)
{
if (Function.con1.State==ConnectionState.Closed)
{
Function.con1.Open();
}

SqlCommand cmdUser = new SqlCommand("SELECT * FROM Table_Users WHERE UserCode=" + textBoxX6.Text + " AND UserPass='" + textBoxX1.Text + "'", Function.con1);
SqlDataReader drUser = cmdUser.ExecuteReader();

if (drUser.Read()==false)
{
MessageBox.Show("خطا در شناسایی کاربر", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBoxX1.Clear();
textBoxX6.Clear();
drUser.Close();
Function.con1.Close();
return;
}

if (Convert.ToBoolean(drUser["UserActive"])==false)
{
MessageBox.Show("کاربر دسترسی ندارد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBoxX1.Clear();
textBoxX6.Clear();
drUser.Close();
Function.con1.Close();
return;
}

Function.UserCode = int.Parse(drUser["UserCode"].ToString());
Function.UserName = drUser["UserName"].ToString();

drUser.Close();
Function.con1.Close();

this.Hide();
FrmMain fr = new FrmMain();
fr.ShowDialog();

}


در نهایت در هر کجای برنامه دسترسی رو میشه چک کرد :



private void pictureBoxUser_Click(object sender, EventArgs e)
{
if (!Function.AccessMenu("pictureBoxUser"))
{
return;
}

new FrmUsers().ShowDialog();
}

ایلیا آخوندزاده
جمعه 27 آذر 1394, 16:41 عصر
سلام
من از این الگوریتم توی VB استفاده کردم ببینید بکارتون میاد:


1 - تعریف یک متغیر منطقی به صورت Public
2 - ساخت یک فیلد True/False در جدول پایگاه داده
3 - مقدار متغیر برابر با مقدار فیلد True/False
4 - دستور if برای بررسی این فیلد که درصورت True بودن دسترسی مورد نظر داده بشه یا نه و برعکس

kamiloted
جمعه 27 آذر 1394, 21:27 عصر
private void btnLogin_Click(object sender, EventArgs e)
{
string type;
if (comboBox1.SelectedIndex == 0) type = "admin";
else type = "user";
string s = "select id from TblLogin where type='" + type + "'and users='" + txtUser.Text + "' and id='" + txtPass.Text + "' ";
SqlDataAdapter da = new SqlDataAdapter(s, con);
da.Fill(ds, "t1");
if (ds.Tables["t1"].Rows.Count > 0)
{
if (comboBox1.SelectedIndex == 0)
variable.i = 1;
else
variable.i = 2;

this.Hide();
main frm = new main();
frm.ShowDialog();

}
else
{
MessageBox.Show("رمز عبور یا نام کاربری اشتباه می باشد", "اخطار");
txtUser.Clear();
txtPass.Clear();
txtUser.Focus();
}
}


private void main_Load(object sender, EventArgs e)
{
if (variable.i == 2)
{
labelX1.Text = "کاربر عادی";
client.Enabled = false;
buttonItem15.Enabled = false;
buttonItem16.Enabled = false;
buttonItem24.Enabled = false;
buttonItem22.Enabled = false;
ribbonTabItem4.Enabled = false;
ribbonTabItem5.Enabled = false;
ribbonTabItem6.Enabled = false;
btncommand.Enabled = false;
}
else
labelX1.Text = "مدیر";
}

vB.N3T
شنبه 28 آذر 1394, 17:15 عصر
سلام
من از قبلا یه برنامه ای نوشتم که از فرم لاگین سطح دسترسی رو برایی ادمین و کاربر معمولی تعین میکنم
وقتی کاربر معمولی وارد میشه قسمت هایی براش غیر فعال میشه

داخل فرم لاگین این متغیر را تعریف کنید
بعد از خط public partial class

public static int myFlag = 0;

روی دکمه ورود این کد رو بنویس

if (radio_user.Checked == true)
{
myFlag = 1;
Main fmain = new Main();
fmain.Show();
this.Hide();

}
else
myFlag = 0;

2 تا را radioButton بزار یکی برای ادمین یکی برای یوزر معمولی

بعد میرسیم به اخرین مرحله . داخل فرم لود.فرم اصلی برنامه این کد بنویس

if (LoginAdmin.myFlag == 1)
{


}

و داخل بلاک if . منو ها یا فرم ها یا منوهایی که میخوایی برای یوزر غیر فعال باشه غیر فعال کن
مثال من این منو ها رو غیر فعال کردم

private void Main_Load(object sender, EventArgs e)
{
if (LoginAdmin.myFlag == 1)
{
menuStrip1.Items["M0"].Enabled = false;
menuStrip1.Items["M1"].Enabled = false;
menuStrip1.Items["M4"].Enabled = false;
menuStrip1.Items["M5"].Enabled = false;
M3_1.Enabled = false;
groupBox1.Enabled = false;
groupBox2.Enabled = false;
groupBox4.Enabled = false;
groupBox5.Enabled = false;
groupBox7.Enabled = false;
groupBox8.Enabled = false;

}
}