Subversion Repositories SmartDukaan

Rev

Rev 37198 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
37105 amit 1
<section class="wrapper">
2
<div class="row">
3
	<div class="col-lg-12">
4
		<h3 class="page-header"><i class="icon_document_alt"></i>RESET PASSWORD</h3>
5
		<ol class="breadcrumb">
6
			<li><i class="fa fa-home"></i><a href="${rc.contextPath}/dashboard">Home</a></li>
7
			<li><i class="icon_document_alt"></i>Reset Password (Non-Prod)</li>
8
		</ol>
9
	</div>
10
</div>
11
<div class="container">
12
	<div class="row">
13
		<div class="col-lg-4">
14
			<label>Reset For</label>
15
			<div class="form-group">
16
				<select class="form-control" id="resetType">
17
					<option value="AUTH_USER">Auth User (Employee)</option>
18
					<option value="PARTNER">Partner</option>
19
				</select>
20
			</div>
21
 
22
			<div id="authUserBlock">
23
				<label>Email or Mobile</label>
24
				<div class="form-group">
25
					<input type="text" class="form-control" placeholder="Employee email or mobile" id="identifier" autocomplete="off">
26
				</div>
27
			</div>
28
 
29
			<div id="partnerBlock" style="display:none;">
30
				<label>Partner Name</label>
31
				<div class="form-group">
37205 amit 32
					<input type="text" class="typeahead form-control" placeholder="Search Partner by name" id="typeaheadpartner" name="partner" data-provide="typeahead" autocomplete="off">
37105 amit 33
					<input type="hidden" id="retailerId" value="0">
34
					<small id="selectedPartnerLabel" style="color:#22c55e;"></small>
35
				</div>
37205 amit 36
				<label>Or Store Code / Retailer ID</label>
37
				<div class="form-group">
38
					<input type="text" class="form-control" placeholder="e.g. HRKN025 or 175135707" id="partnerKey" autocomplete="off">
39
					<small style="color:#94a3b8;">Used only if no partner is picked above.</small>
40
				</div>
37105 amit 41
			</div>
42
 
43
			<label>New Password</label>
44
			<div class="form-group pass_show">
45
				<input type="password" class="form-control" placeholder="New Password" id="newPassword">
46
			</div>
47
			<label>Confirm Password</label>
48
			<div class="form-group pass_show">
49
				<input type="password" class="form-control" placeholder="Confirm Password" id="confirmPassword">
50
			</div>
51
			<div class="form-group">
52
				<input type="button" class="btn btn-primary reset-password-override" value="Reset Password">
53
			</div>
54
		</div>
55
	</div>
37127 amit 56
 
57
	<hr/>
58
	<div class="row">
59
		<div class="col-lg-6">
60
			<h4>Bulk (dev/staging only)</h4>
61
			<p style="color:#94a3b8;font-size:12px;">Download the current test-updated passwords (cleartext), edit the <b>Password</b> column, and re-upload to apply. Columns: Type | Id | Identifier | Password.</p>
62
			<div class="form-group">
37198 amit 63
				<a href="${rc.contextPath}/passwordOverride/download" class="btn btn-default">Download overrides (.xlsx)</a>
37127 amit 64
			</div>
65
			<div class="form-group">
66
				<input type="file" id="overrideFile" accept=".xlsx">
67
			</div>
68
			<div class="form-group">
69
				<input type="button" class="btn btn-primary upload-password-overrides" value="Upload &amp; Apply">
70
			</div>
71
		</div>
72
	</div>
37105 amit 73
</div>
74
</section>
75
 
76
<script type="text/javascript">
77
	$(function () {
78
		$('#resetType').off('change.resetpwd').on('change.resetpwd', function () {
79
			if ($(this).val() === 'PARTNER') {
80
				$('#partnerBlock').show();
81
				$('#authUserBlock').hide();
82
			} else {
83
				$('#partnerBlock').hide();
84
				$('#authUserBlock').show();
85
			}
86
		});
87
 
88
		getPartnerAheadOptions($('#typeaheadpartner'), function (selectedPartner) {
89
			$('#retailerId').val(selectedPartner.partnerId);
90
			$('#selectedPartnerLabel').text('Selected: ' + selectedPartner.displayName + ' (id ' + selectedPartner.partnerId + ')');
91
		});
92
 
93
		$(document).off('click.resetpwd', '.reset-password-override').on('click.resetpwd', '.reset-password-override', function () {
94
			var type = $('#resetType').val();
95
			var newPassword = $('#newPassword').val();
96
			var confirmPassword = $('#confirmPassword').val();
97
 
98
			if (!newPassword) {
99
				alert('Please enter a new password');
100
				return;
101
			}
102
			if (newPassword !== confirmPassword) {
103
				alert('Passwords do not match');
104
				return;
105
			}
106
 
107
			var params = {"type": type, "newPassword": newPassword};
108
			if (type === 'PARTNER') {
109
				var retailerId = $('#retailerId').val();
37205 amit 110
				var partnerKey = ($('#partnerKey').val() || '').trim();
111
				if ((!retailerId || retailerId === '0') && !partnerKey) {
112
					alert('Pick a partner from suggestions, or enter a Store Code / Retailer ID');
37105 amit 113
					return;
114
				}
37205 amit 115
				if (retailerId && retailerId !== '0') {
116
					params.retailerId = retailerId;
117
				} else {
118
					params.partnerKey = partnerKey;
119
				}
37105 amit 120
			} else {
121
				var identifier = $('#identifier').val();
122
				if (!identifier) {
123
					alert('Please enter an email or mobile');
124
					return;
125
				}
126
				params.identifier = identifier;
127
			}
128
 
129
			doPostAjaxRequestWithParamsHandler(context + "/resetPasswordOverride", params, function (response) {
130
				alert('Password reset successfully');
131
				$('#newPassword').val('');
132
				$('#confirmPassword').val('');
133
			});
134
		});
37127 amit 135
 
136
		$(document).off('click.pwdbulk', '.upload-password-overrides').on('click.pwdbulk', '.upload-password-overrides', function () {
137
			var f = $('#overrideFile')[0];
138
			if (!f || !f.files || !f.files.length) {
139
				alert('Please choose an .xlsx file to upload');
140
				return;
141
			}
142
			var fd = new FormData();
143
			fd.append('file', f.files[0]);
144
			$.ajax({
37198 amit 145
				url: context + "/passwordOverride/upload",
37127 amit 146
				type: 'POST',
147
				data: fd,
148
				processData: false,
149
				contentType: false,
150
				success: function (response) {
151
					var msg = response;
152
					try { var p = JSON.parse(response); msg = (p && p.data) ? p.data : p; } catch (e) {}
153
					alert(msg || 'Upload processed');
154
					$('#overrideFile').val('');
155
				},
156
				error: function (xhr) {
157
					alert('Upload failed: ' + (xhr.responseText || xhr.status));
158
				}
159
			});
160
		});
37105 amit 161
	});
162
</script>