PDA

View Full Version : سوال: مشکل در سطح دسترسی فرم لاگین



firoozi90
شنبه 23 آذر 1392, 13:29 عصر
سلام دوستان
توی یکی از پروژه ها برای قسمت لاگین از کد زیر استفاده شده ،که در کمبو باکس اگر کاربر انتخاب شده بود یه سری از آیتم ها واسش غیر فعال میشه



Frm_main fm = new Frm_main();

if (combotype.SelectedIndex == 1)
{
counter = 1;
type = "مدیر";

}
else
{
counter = 2;
type = "کاربر";
fm.buttonx3.Enabled = false;
fm.buttonx2.Enabled = false;
fm.buttonx5.Enabled = false;
fm.buttonx9.Enabled = false;
fm.buttonx10.Enabled = false;
fm.حذفکالاToolStripMenuItem.Enabled = false;
fm.حذفمشتریToolStripMenuItem.Enabled = false;
fm.حسابکاربریToolStripMenuItem.Enabled = false;
fm.ویرایشکالاToolStripMenuItem.Enabled = false;
fum.textdebit.Enabled = false;

}
fm.labelshowuser.Visible = true;
fm.labelshowuser.Text = "سطح دسترسی شما:" + " " + type;

txtpassword.Clear();
this.Hide();
fm.Show();



لاگین به درستی انجام میشه و همه چی خوب پیش میره.اما هنگامی که از فرم اصلی به فرم دیگه ای میرم و از اونجا بر روی دکمه بازگشت کلیک میکنم فرم اصلی دیگه آیتم هاش غیر فعال نیست و برچسب مدیر خورده.
اینم کدش :

Frm_main fm = new Frm_main();
frm_login fl = new frm_login();

if (fl.combotype.SelectedIndex=='1')
{
fl.type = "مدیر";
fm.labelshowuser.Visible = true;
fm.labelshowuser.Text = "سطح دسترسی شما:" + " " + fl.type;
this.Close();
fm.Show();
}
else
{
fl.type = "کاربر";
fm.buttonx3.Enabled = false;
fm.buttonx2.Enabled = false;
fm.buttonx5.Enabled = false;
fm.buttonx9.Enabled = false;
fm.buttonx10.Enabled = false;
fm.حذفکالاToolStripMenuItem.Enabled = false;
fm.حذفمشتریToolStripMenuItem.Enabled = false;
fm.حسابکاربریToolStripMenuItem.Enabled = false;
fm.ویرایشکالاToolStripMenuItem.Enabled = false;
fm.labelshowuser.Visible = true;
fm.labelshowuser.Text = "سطح دسترسی شما:" + " " + fl.type;
this.Close();
fm.Show();
}



به نظرتون اشکال کار کجاست؟

davidrobert
شنبه 23 آذر 1392, 13:40 عصر
با چه زبانی کد نویسی میکنی EF یا ADO من سطح دسترسی رو نوشتم که وقتی طرف وارد میشه بر حسب سطح دسترسی دکمه فعال و غیر فعال میشه اگه خواستی سورسش رو برات قرار بدم.

firoozi90
شنبه 23 آذر 1392, 14:02 عصر
با چه زبانی کد نویسی میکنی EF یا ADO من سطح دسترسی رو نوشتم که وقتی طرف وارد میشه بر حسب سطح دسترسی دکمه فعال و غیر فعال میشه اگه خواستی سورسش رو برات قرار بدم.

با EF نوشتم
مرسی اگه سورسشو بزاری ،ممنونت میشم

davidrobert
شنبه 23 آذر 1392, 14:57 عصر
بفرمایید این هم کدش با ای اف اول باید یک نکته رو در نظر بگرید که فیلدی که در دیتابیس برای فعال غیر فعال قرار دادید برای کاربر که وارد میشه که نشان سطح دسترسی شخص می باشد یعنی اگه تو دیتابیس فیلد سطح دسترسی True بود یعنی دکمه رو میبینه و اگه False بود دکمه غیر فعال میشه در برنامه و اگه رمز عیور به صورت رمز هستش هم من کد رو نوشتم ولی تو این سورس خودم نام کاربری مز نیست ولی رمز عبور رمز تعریف شده است .
اول وارد کلاس Programبرنامه شوید و این کد را بنویسید.
public static string User = "";
وقتی این کد رو نوشتید وارد فرم لاگین شوید این کد رو برای ورود به برنامه بونیسید.
private void LoginSystem()
{

MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] hashedDataBytes;
UTF8Encoding encoder = new UTF8Encoding();

string StrPassWord = TxtPassWord.Text;
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(StrPassWord ));

var query = db.ViewUsersInformationAndCompaniesTogether.Where( d => d.UserName == TxtUsers.Text && d.U_PassWord == hashedDataBytes);
if (TxtPassWord.Text != "" && TxtUsers.Text != "")
{
if (query.Count() != 0)
{

Program.User = TxtUsers.Text.ToString();
this.Hide();
FrmMain fm = new FrmMain();

fm.ShowDialog();
}
else
{
PersianMessageBox.Show("چنین نام کاربری یافت نشود؟", "خطا", PersianMessageBox.Buttons.OK,
PersianMessageBox.Icon.Error);
TxtUsers.Text = "";
TxtPassWord.Text = "";
}
}
else
{
PersianMessageBox.Show("نام کاربری یا رمز عبور را وارد فرمایید؟", "خطا", PersianMessageBox.Buttons.OK,
PersianMessageBox.Icon.Error);
}
}

private void BtnLogin_Click(object sender, EventArgs e)
{
LoginSystem();
}
حالا شما کد مربوط به لاگین را نوشتید وارد صفحه اصلی برای سطح دسترسی قرار دادن شوید.
و این کد رو بنویسید که به شما این امکان رو میدهد مقدار دکمه یا هر چیز دیگه که امکان True و False دارد رو قرار دهید و همچنین اطلاعات کاربر وارد شده در برنامه هم نمایش دهید.public string users = Program.User;

public void UserShowInfo()
{
try
{
var query = from myrow in db.ViewUsersInformationAndCompaniesTogether
where myrow.UserName == users
select
new
{
user = myrow.UserName,
sex = myrow.U_Sex,
namee = myrow.U_Name,
last = myrow.U_Last,
showUserInfo = myrow.U_View_Users_Information,
RegUserInfo = myrow.U_View_User_Registration,
unitt = myrow.U_Unit

};
foreach (var ValueFromQuery in query)
{
LblUsers.Text = ValueFromQuery.user;
LblSex.Text = ValueFromQuery.sex;
LblName.Text = ValueFromQuery.namee;
LblLast.Text = ValueFromQuery.last;
LblUnit.Text = ValueFromQuery.unitt;
نمایشکاربرانواردشدهبهسیست مToolStripMenuItem.Visible = Convert.ToBoolean(ValueFromQuery.showUserInfo);
ثبتکاربرانونحوهدسترسیToolStri pMenuItem.Visible = Convert.ToBoolean(ValueFromQuery.RegUserInfo);
}
}
catch (Exception ex)
{
if (!showfriendmessageMainUser)
{
PersianMessageBox.Show(ex.Message);
}
else
{
PersianMessageBox.Show("خطا در اجرا دستورات / خطا 105", "خطا", PersianMessageBox.Buttons.OK,
PersianMessageBox.Icon.Error);
}
}
}

public void GetPic()
{
try
{
var query = from myrow in db.ViewUsersInformationAndCompaniesTogether
where myrow.UserName == users
select new
{
pic = myrow.U_Photo
};
pictureBox1.Image = Image.FromStream(new System.IO.MemoryStream(query.Single().pic.ToArray( )));

// select Image.FromStream(new MemoryStream(myrow.Photo));
//foreach (Image image in query)
//{
// pictureBox1.Image= (image);
//}
}
catch (Exception ex)
{
if (!showfriendmessageMainUser)
{
PersianMessageBox.Show(ex.Message);
}
else
{
PersianMessageBox.Show("خطا در اجرا دستورات / خطا 106", "خطا", PersianMessageBox.Buttons.OK,
PersianMessageBox.Icon.Error);
}
}
}
حالا برای فراخوانی دستور در فرم لود این را بنویسید . private void FrmMain_Load(object sender, EventArgs e)
{ UserShowInfo();
GetPic();}

وقتی فرم لود میشود دکمه های مورد نظر در برنامه غیر فعال یا فعال میشود به وسیله این دستور نمایشکاربرانواردشدهبهسیست مToolStripMenuItem.Visible = Convert.ToBoolean(ValueFromQuery.showUserInfo);
ثبتکاربرانونحوهدسترسیToolStri pMenuItem.Visible = Convert.ToBoolean(ValueFromQuery.RegUserInfo); و باقی دستور که قرار دارد برای نمایش تصویر و اسم فایل یعنی همون مشخصات کاربر هستش که وقتی وارد شد اطلاعات کاربر وارد شده رو در برنامه نمایش میدهد. اگه رمز عبور رمز نبود می توانید رمز عبور رو به صورت نام کاربر رمز تعریف کنید فقط یک چیزی هیچ وقت نام کاربری رو رمز در نیاورید چون موقع جلوگیری از تکراری بودن نام کاربری با مشکل بر خورد میکنید.و تو هر فرم که مایل بودید می توانید سطح دسترسی قرار دهید.

firoozi90
یک شنبه 24 آذر 1392, 07:02 صبح
مرسی از لطفت
ممنون