Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.Designer.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.Designer.cs	(revision 7650)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.Designer.cs	(revision 7651)
@@ -28,4 +28,13 @@
       this.userNameTextBox = new System.Windows.Forms.TextBox();
       this.fullNameTextBox = new System.Windows.Forms.TextBox();
+      this.label3 = new System.Windows.Forms.Label();
+      this.label4 = new System.Windows.Forms.Label();
+      this.emailTextBox = new System.Windows.Forms.TextBox();
+      this.idTextBox = new System.Windows.Forms.TextBox();
+      this.label5 = new System.Windows.Forms.Label();
+      this.label6 = new System.Windows.Forms.Label();
+      this.lastActivityTextBox = new System.Windows.Forms.TextBox();
+      this.lastLoginTextBox = new System.Windows.Forms.TextBox();
+      this.resetPasswordButton = new System.Windows.Forms.Button();
       this.SuspendLayout();
       // 
@@ -50,10 +59,10 @@
       // userNameTextBox
       // 
-      this.userNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+      this.userNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
       this.userNameTextBox.Enabled = false;
-      this.userNameTextBox.Location = new System.Drawing.Point(72, 3);
+      this.userNameTextBox.Location = new System.Drawing.Point(76, 3);
       this.userNameTextBox.Name = "userNameTextBox";
-      this.userNameTextBox.Size = new System.Drawing.Size(289, 20);
+      this.userNameTextBox.Size = new System.Drawing.Size(285, 20);
       this.userNameTextBox.TabIndex = 2;
       this.userNameTextBox.TextChanged += new System.EventHandler(this.userNameTextBox_TextChanged);
@@ -61,16 +70,111 @@
       // fullNameTextBox
       // 
-      this.fullNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.fullNameTextBox.Location = new System.Drawing.Point(72, 29);
+      this.fullNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.fullNameTextBox.Location = new System.Drawing.Point(76, 29);
       this.fullNameTextBox.Name = "fullNameTextBox";
-      this.fullNameTextBox.Size = new System.Drawing.Size(289, 20);
+      this.fullNameTextBox.Size = new System.Drawing.Size(285, 20);
       this.fullNameTextBox.TabIndex = 3;
       this.fullNameTextBox.TextChanged += new System.EventHandler(this.fullNameTextBox_TextChanged);
       // 
+      // label3
+      // 
+      this.label3.AutoSize = true;
+      this.label3.Location = new System.Drawing.Point(3, 58);
+      this.label3.Name = "label3";
+      this.label3.Size = new System.Drawing.Size(39, 13);
+      this.label3.TabIndex = 4;
+      this.label3.Text = "E-Mail:";
+      // 
+      // label4
+      // 
+      this.label4.AutoSize = true;
+      this.label4.Location = new System.Drawing.Point(5, 84);
+      this.label4.Name = "label4";
+      this.label4.Size = new System.Drawing.Size(19, 13);
+      this.label4.TabIndex = 5;
+      this.label4.Text = "Id:";
+      // 
+      // emailTextBox
+      // 
+      this.emailTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.emailTextBox.Location = new System.Drawing.Point(76, 55);
+      this.emailTextBox.Name = "emailTextBox";
+      this.emailTextBox.Size = new System.Drawing.Size(285, 20);
+      this.emailTextBox.TabIndex = 6;
+      this.emailTextBox.TextChanged += new System.EventHandler(this.emailTextBox_TextChanged);
+      // 
+      // idTextBox
+      // 
+      this.idTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.idTextBox.Enabled = false;
+      this.idTextBox.Location = new System.Drawing.Point(76, 81);
+      this.idTextBox.Name = "idTextBox";
+      this.idTextBox.Size = new System.Drawing.Size(285, 20);
+      this.idTextBox.TabIndex = 7;
+      // 
+      // label5
+      // 
+      this.label5.AutoSize = true;
+      this.label5.Location = new System.Drawing.Point(3, 110);
+      this.label5.Name = "label5";
+      this.label5.Size = new System.Drawing.Size(67, 13);
+      this.label5.TabIndex = 8;
+      this.label5.Text = "Last Activity:";
+      // 
+      // label6
+      // 
+      this.label6.AutoSize = true;
+      this.label6.Location = new System.Drawing.Point(3, 136);
+      this.label6.Name = "label6";
+      this.label6.Size = new System.Drawing.Size(59, 13);
+      this.label6.TabIndex = 9;
+      this.label6.Text = "Last Login:";
+      // 
+      // lastActivityTextBox
+      // 
+      this.lastActivityTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.lastActivityTextBox.Enabled = false;
+      this.lastActivityTextBox.Location = new System.Drawing.Point(76, 107);
+      this.lastActivityTextBox.Name = "lastActivityTextBox";
+      this.lastActivityTextBox.Size = new System.Drawing.Size(285, 20);
+      this.lastActivityTextBox.TabIndex = 10;
+      // 
+      // lastLoginTextBox
+      // 
+      this.lastLoginTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.lastLoginTextBox.Enabled = false;
+      this.lastLoginTextBox.Location = new System.Drawing.Point(76, 133);
+      this.lastLoginTextBox.Name = "lastLoginTextBox";
+      this.lastLoginTextBox.Size = new System.Drawing.Size(285, 20);
+      this.lastLoginTextBox.TabIndex = 11;
+      // 
+      // resetPasswordButton
+      // 
+      this.resetPasswordButton.Location = new System.Drawing.Point(6, 159);
+      this.resetPasswordButton.Name = "resetPasswordButton";
+      this.resetPasswordButton.Size = new System.Drawing.Size(96, 23);
+      this.resetPasswordButton.TabIndex = 12;
+      this.resetPasswordButton.Text = "Reset Password";
+      this.resetPasswordButton.UseVisualStyleBackColor = true;
+      this.resetPasswordButton.Click += new System.EventHandler(this.resetPasswordButton_Click);
+      // 
       // UserView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.resetPasswordButton);
+      this.Controls.Add(this.lastLoginTextBox);
+      this.Controls.Add(this.lastActivityTextBox);
+      this.Controls.Add(this.label6);
+      this.Controls.Add(this.label5);
+      this.Controls.Add(this.idTextBox);
+      this.Controls.Add(this.emailTextBox);
+      this.Controls.Add(this.label4);
+      this.Controls.Add(this.label3);
       this.Controls.Add(this.fullNameTextBox);
       this.Controls.Add(this.userNameTextBox);
@@ -78,5 +182,5 @@
       this.Controls.Add(this.label1);
       this.Name = "UserView";
-      this.Size = new System.Drawing.Size(364, 106);
+      this.Size = new System.Drawing.Size(364, 185);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -90,4 +194,13 @@
     private System.Windows.Forms.TextBox userNameTextBox;
     private System.Windows.Forms.TextBox fullNameTextBox;
+    private System.Windows.Forms.Label label3;
+    private System.Windows.Forms.Label label4;
+    private System.Windows.Forms.TextBox emailTextBox;
+    private System.Windows.Forms.TextBox idTextBox;
+    private System.Windows.Forms.Label label5;
+    private System.Windows.Forms.Label label6;
+    private System.Windows.Forms.TextBox lastActivityTextBox;
+    private System.Windows.Forms.TextBox lastLoginTextBox;
+    private System.Windows.Forms.Button resetPasswordButton;
   }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.cs	(revision 7650)
+++ /branches/ClientUserManagement/HeuristicLab.Clients.Access.Administration/3.3/Views/UserView.cs	(revision 7651)
@@ -20,4 +20,6 @@
 #endregion
 
+using System;
+using System.Windows.Forms;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
@@ -42,7 +44,15 @@
         userNameTextBox.Clear();
         fullNameTextBox.Clear();
+        emailTextBox.Clear();
+        idTextBox.Clear();
+        lastActivityTextBox.Clear();
+        lastLoginTextBox.Clear();
       } else {
         userNameTextBox.Text = Content.UserName;
         fullNameTextBox.Text = Content.FullName;
+        emailTextBox.Text = Content.Email;
+        idTextBox.Text = Content.Id.ToString();
+        lastActivityTextBox.Text = Content.LastActivityDate.ToString();
+        lastLoginTextBox.Text = Content.LastLoginDate.ToString();
       }
     }
@@ -57,4 +67,26 @@
         Content.UserName = userNameTextBox.Text;
     }
+
+    private void emailTextBox_TextChanged(object sender, System.EventArgs e) {
+      if (Content.Email != emailTextBox.Text)
+        Content.Email = emailTextBox.Text;
+    }
+
+    private void resetPasswordButton_Click(object sender, System.EventArgs e) {
+      Action a = new Action(delegate {
+        string result = AccessAdministrationClient.CallAccessService<string>(s => s.ResetPassword(Content.Id));
+        ShowPassword(result);
+      });
+
+      AccessAdministrationClient.Instance.ExecuteActionAsync(a, PluginInfrastructure.ErrorHandling.ShowErrorDialog); ;
+    }
+
+    private void ShowPassword(string result) {
+      if (InvokeRequired) {
+        Invoke(new Action<string>(ShowPassword), result);
+      } else {
+        MessageBox.Show("The new password is: " + result, "Password Reset", MessageBoxButtons.OK, MessageBoxIcon.Information);
+      }
+    }
   }
 }
Index: /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs
===================================================================
--- /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 7650)
+++ /branches/ClientUserManagement/HeuristicLab.Services.Access/3.3/AccessService.cs	(revision 7651)
@@ -567,5 +567,22 @@
       RoleVerifier.AuthenticateForAllRoles(AccessServiceRoles.Administrator);
 
-      AddUser(user);
+      MembershipUser membershipUser = Membership.GetUser((object)user.Id);
+      if (membershipUser != null) {
+        membershipUser.Email = user.Email;
+        membershipUser.IsApproved = user.IsApproved;
+        membershipUser.Comment = user.Comment;
+        Membership.UpdateUser(membershipUser);
+      }
+
+      using (DA.AccessServiceDataContext context = new DA.AccessServiceDataContext()) {
+        var query = from u in context.UserGroupBases.OfType<DA.User>()
+                    where u.Id == user.Id
+                    select u;
+        if (query.Count() > 0) {
+          DA.User u = query.First();
+          u.FullName = user.FullName;
+          context.SubmitChanges();
+        }
+      }
     }
 
